Предположим, я использую плагин jQuery" placeholder ", который считывает атрибут" placeholder "из элементов ввода и имитирует его для браузеров, которые еще не поддерживают заполнители.
] Но я бы все равно хотел, чтобы $ ("input"). Val () работал правильно, то есть возвращал "", если текст в текстовом поле является текстом-заполнителем. Есть ли способ переопределить .val () просто для этих входов?
попробуйте следующее:
jQuery.fn.rVal=function() {
if(this[0]) {
var ele=$(this[0]);
if(ele.attr('placeholder')!=''&&ele.val()==ele.attr('placeholder')) {
return '';
} else {
return ele.val();
}
}
return undefined;
};
и просто используйте $ ("# ele_id"). RVal () для получения значений. Или, если вы хотите заменить функцию val (и использовать ее как обычно):
jQuery.fn.rVal=jQuery.fn.val;
jQuery.fn.val=function(value) {
if(value!=undefined) {
return this.rVal(value);
}
if(this[0]) {
var ele=$(this[0]);
if(ele.attr('placeholder')!=''&&ele.rVal()==ele.attr('placeholder')) {
return '';
} else {
return ele.rVal();
}
}
return undefined;
};
Не могли бы вы использовать плагин водяных знаков?
http://code.google.com/p/jquery-watermark/
Это довольно легко использовать, просто вызовите $ ("input"). watermark ("Текст-заполнитель")
, и он будет вести себя так, как вы описали
Вы можете глобально переопределить метод val ()
, а затем проверить, является ли это нормальным вводом.