Du har ret igen :-)
Så mit bud, på vores fælles bud, ser cirka sådan her ud:
- if (!('placeholder' in document.createElement('input'))) { $.getScript("placeholder_polyfill.js" }
Men...
Det tager jo tid at loade det asynkront og et placeholder polyfill, burde ikke fylde ret meget. Desuden er det jo vigtigt, at placeholder værdier vises med det samme, hvis man bruger dem som labels for sine felter, så de er der, selv hvis man har en bruger der med det samme går i gang med at bruge felterne. Derfor burde jo lave det inline, så superbrugerne ikke skal vente på at det bliver hentet efter page load. Desuden bør det jo ikke afhænge af jQuery - det er jo et stort library, og det er et simpelt problem vi har.
- if (!('placeholder' in document.createElement('input'))) {
- var inputArray = document.getElementsByTagName('input');
- for (var i = 0; i < inputArray.length; i++) {
- if ((inputArray[i].getAttribute('type') == 'text') && (inputArray[i].getAttribute('placeholder') != '')) {
- if ((inputArray[i].getAttribute('value') === '') || (inputArray[i].getAttribute('value') === null)) {
- inputArray[i].setAttribute('value', inputArray[i].getAttribute('placeholder'));
- }
- inputArray[i].onblur = function() { (function(el) {
- if (el.getAttribute('value') === '') {
- el.setAttribute('value', el.getAttribute('placeholder'));
- }
- })(this); };
- inputArray[i].onfocus = function() { (function(el) {
- if (el.getAttribute('value') === el.getAttribute('placeholder')) {
- el.setAttribute('value', '');
- }
- })(this); };
- }
- }
- }
Så skal det jo bare minifies... :p
Test på jsFiddle:
http://jsfiddle.net/REqUH/
Indlæg senest redigeret d. 19.04.2012 09:33 af Bruger #17015