Использование проверки jQuery и подсказок к полю на одном и том же времени - PullRequest
3 голосов
/ 11 февраля 2011

Я пытаюсь использовать плагин jQuery Validation (http://docs.jquery.com/Plugins/Validation/) в сочетании с подсказкой поля.

Проблема в том, что подсказка поля помещает текст в атрибут значения, и поскольку в атрибуте значения есть текст, плагин валидации не видит, что что-то не так.

Я думал, что валидация выдает ошибку, если поле пустое ИЛИ, если поле содержит тот же текст, что и подсказка поля (то есть: есликто-то должен был ввести «Имя» в поле имени, и тогда возникнет ошибка.

Существует ли элегантный способ использования проверки в сочетании с подсказкой кода?

Спасибо!

Дорон

1 Ответ

3 голосов
/ 11 февраля 2011

Существует два вида «хинтингового» кода (более известный как водяной знак или заполнитель текста): те, которые заменяют значение поля, и те, которые размещают какой-то элемент над вводом, чтобы выглядеть так, как будто текст внутривходные данные.

Я предполагаю, что вы используете первый тип, поэтому одно простое (и лучшее) решение состоит в том, чтобы полностью исключить эти виды и переключиться на плагин, который использует второй метод.Есть много плагинов, которые работают таким образом, например этот , просто обязательно прочитайте, как они работают.

Если изменение кода хинтинга не вариант, то у вас естьдве другие альтернативы.Оба не идеальны, но, возможно, один из них подойдет вам больше:

Очистить значения при отправке

В пределах кода подсказки привязать к событию submit формыи циклически переберите все входные данные, чтобы очистить любой, имеющий то же значение, что и подсказка.

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

Overide .val ()

Поскольку плагин проверки использует jQuery, выможет переопределить функцию .val() jQuery для возврата '', если значение равно подсказке:

var oldVal = $.fn.val;
$.fn.val = function () {
    var returnVal = oldVal.call(this);
    if (returnVal == hintVal) returnVal = '';
    return returnVal;
};

Очевидным недостатком этого является то, что плагин всегда должен использовать .val() для получения входных значений.

...