io suggerirei di uno qualsiasi dei seguenti approcci:
$('input:text').each(
function(i,el) {
if (!el.value || el.value == '') {
el.placeholder = 'placeholdertext';
/* or:
el.placeholder = $('label[for=' + el.id + ']').text();
*/
}
});
JS Fiddle demo using el.placeholder = 'placeholdertext'
.
JS Fiddle demo using el.placeholder = $('label[for=' + el.id + ']').text()
.
Oppure si potrebbe usare un array per memorizzare i vari segnaposti:
var placeholders = ['Email address', 'favourite color'];
$('input:text').each(
function(i,el) {
if (!el.value || el.value == '') {
el.placeholder = placeholders[i];
}
});
JS Fiddle demo.
Per specificare un particolare segnaposto per un elemento particolare:
var placeholders = {
'one' : 'Email address',
'two' : 'Favourite color'
};
$('input:text').each(
function(i,el) {
if (!el.value || el.value == '') {
el.placeholder = placeholders[el.id];
}
});
JS Fiddle demo.
Aggiunto un catch/ripiego nel caso in cui una voce non esiste nei i segnaposto oggetto per un particolare input
:
var placeholders = {
'oe' : 'Email address', // <-- deliberate typo over there
'two' : 'Favourite color'
};
$('input:text').each(
function(i,el) {
if (!el.value || el.value == '') {
el.placeholder = placeholders[el.id] || '';
}
});
JS Fiddle demo.
fonte
2012-10-20 22:10:38
http://jsfiddle.net/gT7dv/ –
@RPM Sarebbe troppo semplice, no? :) Ho scritto che non posso influenzare l'output HTML. Questo è il codice che ho e devo aggiungere l'attributo placeholder con jQuery – take2
Non influenza affatto l'output HTML (tranne che aggiungendo il segnaposto, che è quello che ti serve, non è vero ??)! Ma ricorda che è per HTML 5! – Robyflc