Вызов функций с помощью jQuery

#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
    }
});
}