Плагин JQuery Validation: как мне сделать его повторным - PullRequest
1 голос
/ 20 августа 2010

Сайт: http://tinyurl.com/358lh6a

Я хочу повторно подтвердить адрес дворца (домен, который они хотят, форма: Имя ) всякий раз, когда DomainSelect (расширение домена) в любом случае изменяется.

Я попробовал просто:

<select id=DomainSelect name=DomainSelect onChange="$('#Register').validate().element('#Name');">

Это не сработало. Я не уверен, действительно ли .element повторно проверяет элемент формы или просто возвращает true или false.

Кроме того, следует отметить, что при изменении Пакета DomainSelect полностью стирается и добавляется новые значения (которые могут что-то испортить). Если бы можно было предложить другой способ, например, какое-то сокрытие.

Edit:

Глядя на источник для плагина, я смотрю на удаленную функцию:

remote: function(value, element, param) {
            if ( this.optional(element) )
                return "dependency-mismatch";

            var previous = this.previousValue(element);
            if (!this.settings.messages[element.name] )
                this.settings.messages[element.name] = {};
            previous.originalMessage = this.settings.messages[element.name].remote;
            this.settings.messages[element.name].remote = previous.message;

            param = typeof param == "string" && {url:param} || param; 

            if ( previous.old !== value ) {

Важной частью здесь является previous.old! == значение . Так как я действительно проверяю только #Name и добавляю #DomainSelect в HTTP-запросе POST ... значение #Name никогда не изменяется, поэтому функция запускает триггер. '

Один из способов обойти это - создать скрытый ввод, объединяющий #Name & #DomainSelect вместе, а затем проверить его, таким образом, значение изменяется. Если кто-то еще не придумал лучшую идею. Другой вариант - использовать мой собственный метод, но для этого нужно написать ненужный код для запроса Http и т. Д.

Редактировать: я решил попробовать сделать скрытый ввод, который принимает значения двух входов и затем проверяет его. Код был грязный:

<input name=Name id=Name size=17 onKeyUp="$('#NameDomainSelect').val(   $('#Name').val() + $('#DomainSelect').val()     );$('#NameDomainSelect').valid();">
<select id=DomainSelect name=DomainSelect onChange="$('#NameDomainSelect').val( $('#Name').val() + $('#DomainSelect').val()     );$('#NameDomainSelect').valid();">

Где Имя - это поддомен, а DomainSelect - это сам домен. Затем NameDomainSelect были объединены как Name, так и DomainSelect. Затем мне пришлось определить правило для NameDomainSelect и немного изменить свой PHP. Однако теперь он показывает 2 галочки, потому что он проверяет как Name (для обязательных), так и NameDomainSelect ... Sigh ...

Так что я решил в качестве обходного пути, пока кто-нибудь не покажет мне, как иначе изменить удаленную функцию проверки для принятия массива в качестве параметра. Элемент 0 представляет собой строку, указывающую, какое значение формы следует включить, в данном случае DomainSelect ..., а элемент 1 - объект, как обычно для запроса ajax.

if (!param[0] == "") value = value + $("#" + param[0]).val();
...
param = typeof param[1] == "string" && {url:param[1]} || param[1]; 

Для удаленных вызовов, когда мне не нужны 2 значения, я просто устанавливаю элемент 0 на "".

1 Ответ

3 голосов
/ 20 августа 2010

Попробуйте:

<select id="DomainSelect" name="DomainSelect" onChange="$('#Name').valid();">

если не работает, я рекомендую добавить другой пользовательский метод, как вы сказали ранее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...