2014-02-10 3 views
0

У меня возникла проблема с переменной «sync» в функции ниже, когда она установлена, когда она установлена ​​в первый раз.Проблема с рассмотрением Javascript с проверкой jQuery

Если я вызываю ниже с ...

save(true); 
save(false); 

.

var save = function (sync) { 

     // value of sync here always reflects what is passed in 

     $('form').validate({ 
      rules: { 
       ... 
      }, 
      submitHandler: function() { 
       var ajax = sync; // the first time sync is true, and then it is always true! 
      } 
     }); 
     $('form').submit(); 
    } 

Первая синхронизация вызова - это «истина». Во второй синхронизации вызова «false» перед проверкой, но в submitHandler синхронизация возвращается к «true».

Я думаю, что это проблема. В обработчике отправки я могу получить доступ к переданному в значение «sync»?

+2

Каждый раз, когда вы вызываете 'save', вы создаете новый объект validator без удаления старого. Можете ли вы добавить больше кода о том, как вызывается вызов 'save'? В идеале вы должны называть '$(). Validate()' __once__ независимо от того, сколько раз вы вызываете 'save'. – Mathletics

+0

save() вызывается прямо из обработчика нажатия кнопки. Таким образом, нажмите кнопку, и сохранение будет вызвано (и вызывается только один раз). Я думаю, что «это» в submitHandler - это проверка подлинности jquery. Так или иначе, когда синхронизация будет установлена, она никогда не может быть установлена ​​снова. Очень странно. –

+1

... похоже, что вы делаете это неправильно. Вы должны вызвать 'validate' в форме, когда она создана, и позволить ей обрабатывать события отправки. Какова цель 'save (false)'? – Mathletics

ответ

0

Я решил эту проблему, используя правильную проверку правильности jQuery. Как было предложено @Mathletics, я теперь вызываю подтверждение при инициализации и использую Valid() для проверки формы.

Смежные вопросы