Сайт: 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 на "".