2013-02-27 8 views
1
<script type="text/javascript"> 
$(document).ready(function() { 
    jQuery(function($){ 
     $("#form").submit(function(e){ 
      if ($(this).valid()){ 
       $.ajax({ 
        type: "POST", 
        url: "http://localhost/My/modules/validate.php", 
       }); 
      } 
      return false; 
    })}); 
     $("#form").validate({ 
      rules: { 
       user: { 
        remote: { 
         url: "http://localhost/My/modules/validate.php", 
         async: false, 
        } 
       } 
      } 
     }); 
}); 
$.validator.setDefaults({ 
    debug:  true, 
    success: "valid", 
}); 
</script> 

Я хочу создать дистанционные правила проверки. В этом примере правильно читаются запросы ajax. Хотя при возврате true/false оба значения проверяются на ошибку проверки.jQuery - дистанционное правило проверки

Однако удаление части ajax (jQuery()) приводит к отсутствию инициализации ajax, запрос даже не обрабатывается.

async: false кажется пассивным, удаляя это, получается то же самое.

Любой может иметь хоть малейшее представление о том, что может быть неправильным здесь?

EDIT:.

$(document).ready(function() { 
     $("#form").validate({ 
      rules: { 
       user: { 
        remote: "http://localhost/My/modules/validate.php", 
       } 
      }, 
      submitHandler: function (form) { 
       // do your ajax form submission here 
       return false; // prevent redirect since you did ajax 
      } 
     }); 
}); 
</script> 
+0

Тем не менее, он ведет себя очень странно - $ («# формой») в силу() всегда TRUE, и рабочий процесс останавливается при нажатии кнопки представить, как если бы оно было ложным.. – user2115883

+0

Это весь сценарий ... никто не знает? Crap, я пытаюсь избавиться от него в течение половины этого дня ... – user2115883

+0

Почему вы называете тот же PHP из двух мест? Является 'validate.php' для проверки одного поля с помощью' remote' rule или 'validate.php' для отправки формы? – Sparky

ответ

2

Вам не нужен внешний submit обработчик при использовании плагина Validate, потому что у него уже есть все обработчики событий, встроенные в

Встроенный submitHandler только уволен, когда форма действительна, и именно там вы разместили ajax для отправки формы.

Вы делаете ajax в двух местах ... с правилом remote и с вашим submit обработчиком.

  • Используйте правило remote, если ваш аякс используется для проверки поля.
  • Используйте submitHandler, если ваш аякс используется для отправки формы.

Это используется только the remote rule, as per documentation:

$(document).ready(function() { 

    $("#form").validate({ 
     rules: { 
      user: { 
       // ajax in remote rule to check this field 
       remote: "http://localhost/My/modules/validate.php" 
       } 
      } 
     } 
    }); 

}); 

// get rid of all this 
//$.validator.setDefaults({ 
    //debug: true, // not needed in production 
    //success: "valid", // this is already the default. 
//}); 

Ниже только мое предложение если вы используете Ajax для отправки формы. Игнорируйте это в противном случае.

Это использование the submitHandler callback, as per documentation:

$(document).ready(function() { 

    $("#form").validate({ 
     // your rules & options, 
     submitHandler: function (form) { 
      // do your ajax form submission here 
      return false; // prevent redirect since you did ajax 
     } 
    }); 

}); 
+0

Что, кстати, «// сделаем вашу заявку в форме ajax»? Я должен что-то там положить? – user2115883

+0

@ user2115883, я понятия не имею, что вы делаете. '// помещаем ваш аякс здесь ', где вы поместите свой аякс-код для отправки формы. Вы используете ajax для отправки формы? Я понятия не имею ... но это то, где он должен быть размещен. – Sparky

+0

@ user2115883, просто обратите внимание на первую часть (о 'дистанционном правиле), если это все, что вы делаете. – Sparky

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