Могу ли я переопределить jQuery .val () только для некоторых элементов ввода?

Предположим, я использую плагин jQuery" placeholder ", который считывает атрибут" placeholder "из элементов ввода и имитирует его для браузеров, которые еще не поддерживают заполнители.

] Но я бы все равно хотел, чтобы $ ("input"). Val () работал правильно, то есть возвращал "", если текст в текстовом поле является текстом-заполнителем. Есть ли способ переопределить .val () просто для этих входов?

7
задан Chung Wu 20 August 2010 в 19:35
поделиться

3 ответа

попробуйте следующее:

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;
};
7
ответ дан 7 December 2019 в 03:09
поделиться

Не могли бы вы использовать плагин водяных знаков?

http://code.google.com/p/jquery-watermark/

Это довольно легко использовать, просто вызовите $ ("input"). watermark ("Текст-заполнитель") , и он будет вести себя так, как вы описали

0
ответ дан 7 December 2019 в 03:09
поделиться

Вы можете глобально переопределить метод val () , а затем проверить, является ли это нормальным вводом.

2
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: