#jquery
#jquery
Вопрос:
У меня есть следующий код:
var x;
x=$(document);
x.ready(initEvents);
function initEvents()
{
var x;
x = $("#send");
x.click(pressButton);
x = $("#clean");
x.click(cleanForm);
}
/*this method validates the form*/
function pressButton()
{
$("#form1 :input").attr("disabled", true);
$("#form1").validate(
{ rules:
{
//sets the rules for validate
},
messages:
{
//sets the message for validates
},
submitHandler: function (form)
{
//send the form
}
});
}
Моя проблема в том, что если поместить эту строку $("#form1 :input").attr("disabled", true);
, проверка не выполняется, но если я прокомментировал, функция проверки работает отлично. Вопрос в том, почему я не могу выполнить две строки? Что я делаю не так в коде?
Комментарии:
1. возможно, ваш плагин проверки не обрабатывает элементы формы, которые являются
disabled
.2. Что вы имеете в виду, когда проверяет, не выполняется ? Я предполагаю, что отключенные элементы не проверяются, поскольку они все равно не отправляются на сервер.
3. @Felix Kling спасибо, что спросили, когда я говорю о том, что проверки не выполняются, это означает, что не используется проверка
4. Почему вы вообще отключаете поля? (Я должен был спросить об этом первым).
5. в соответствии с параметрами проверки jquery отключенные элементы игнорируются. docs.jquery.com/Plugins/Validation/validate#toptions посмотрите на параметр игнорировать, который в нем четко указан.
Ответ №1:
Я не думаю, что это ваша реальная проблема здесь, но стоит отметить, что вам следует обратить внимание на то, чтобы правильно расставлять фигурные скобки при работе с JavaScript. Добавление разрыва строки между именем ключа и открывающей скобкой значения может привести к тому, что в некоторых случаях имя ключа будет интерпретироваться как метка JavaScript.
Было бы лучше обычно использовать этот стиль, чтобы избежать появления странных ошибок позже:
// Why complicate this?
$(document).ready(initEvents);
function initEvents() {
$("#send").click(pressButton);
$("#clean").click(cleanForm);
}
/*this method validates the form*/
function pressButton() {
$("#form1 :input").attr("disabled", true);
$("#form1").validate({
rules: {
// the rules for validate
},
messages: {
//sets the message for validates
},
submitHandler: function (form) {
//send the form
}
});
}
Ответ №2:
Я решил свою проблему следующим образом, отключил форму после проверки, поместив строку в submithanlder проверки
/*this method validates the form*/
function pressButton()
{
$("#form1").validate(
{ rules:
{
//sets the rules for validate
},
messages:
{
//sets the message for validates
},
submitHandler: function (form)
{
//disable the form
$("#form1 :input").attr("disabled", true);
//send the form
}
});
}