1

我的代码是:

$('#trainer_registration_form_new').submit(function(){
            var email           = $('#email').val();
            var dataString      = 'email='+email;
            $.ajax({
                type     : "get",
                url      : "checkEmail.php",
                data     : dataString,
                async    : false,
                dataType : "html",
                success  : function(result){
                    if(result==1) {
                        alert('email alredy exist');
                        $("input#email").focus();
                        $('#email').val('');
                        tempField =  $('#email');
                        setTimeout("tempField.focus();",1);
                        return false;
                    } else {
                       return true;
                    }
                }
            });
     });

这段代码有什么问题,我只想检查重复的电子邮件 onsubmit 并提交表单。但它没有任何其他想法?

4

3 回答 3

0

尝试更改dataType : "html",dataType : "text",

alert(result);if(result==1) {

于 2013-02-21T09:53:06.730 回答
0

我猜你打算让你return false阻止表单提交?情况并非如此,因为您是falsesuccess回调而不是submit()回调函数返回的。

相反,您可以考虑在submit()回调顶部创建一个布尔变量,并在其中设置它的值success并在最后返回它。

所以这是一个粗略的例子:

$('#trainer_registration_form_new').submit(function(){
   var $form = $(this);
   $.ajax({
      // As you were...
      success: function(result) {
          if(result==1) {
              // As you were..
          } else {
              $form.submit()
     }
   });

   return false;
});
于 2013-02-21T09:49:54.800 回答
0

return语句位于作为 AJAX 请求的处理程序传递的匿名函数内部success,因此只会从该函数返回一个值(无处),而不是从您的提交处理程序函数。您需要使用一个变量来存储返回值,并将其设置为该函数truefalse该函数内部。

理想情况下,您也应该避免使用async: false,因为这样会破坏使用 AJAX 的全部目的,并且会锁定浏览器直到请求完成。

于 2013-02-21T09:50:10.340 回答