2013-11-29 66 views
0

我有我检查自己的价值观与阿贾克斯,如果有效,则发送到另一个页面,这里是我index.js我提交表单在第一次不发送,但在第二次发送时提交按钮点击

$("#form").submit(function(event){ 
    var thisForm = $(this); 
    $(".ajaxLogo").show(); 
    event.preventDefault(); 

    // do some stuff 

    $.ajax({ 
     url: '/ajax/Check', 
     data: data, 
     dataType: 'json', 
     success:function(result){ 
      // .... 
      // check some situations that if form is not valid don't send the form 
      // .... 

      if(result.isOK=='1'){ 
       alert("I am before this line"); 
       thisForm.unbind('submit').submit(); // send request to '/' 
       alert("I am after that line"); 
      } 
     } 
    }); 
}); 
形式

我的问题发生在页面加载时。第一次点击提交按钮时,我在浏览器中看到两个alert,但没有任何反应(表单不提交,页面不刷新)!但是,第二次,表单发送和页面刷新。为什么?

此外,第二次我没有在浏览器中看到两个alert s。

+0

event.preventDefault(); ?? –

+0

我想停止提交,直到ajax验证未完成然后提交它,然后我必须添加'event.preventDefault();'在第一个这是错的? – mojibuntu

+0

JS在第一次运行后可能会崩溃,永远不会有机会再次运行。根据你的代码评论,你忘记了右括号。 –

回答

0

我会建议你保持一个全局var isok ='',如果所有的result.isok =“1”比donot做e.preventDefault();.它不是很整洁的方式,但可以解决问题,以保持提交表单直到ajax验证完成,而没有主要的代码更改。

var isok =''; 
$("#form").submit(function(event){ 
var thisForm = $(this); 
$(".ajaxLogo").show(); 
if(isok != '1') 
event.preventDefault(); 

// do some stuff 

$.ajax({ 
    url: '/ajax/Check', 
    data: data, 
    dataType: 'json', 
    success:function(result){ 
     // .... 
     // check some situations that if form is not valid don't send the form 
     // .... 

     if(result.isOK=='1'){ 
      isok='1'; 
      alert("I am before this line"); 
      thisForm.unbind('submit').submit(); // send request to '/' 
      alert("I am after that line"); 
     } 
    } 
}); 
}); 
+0

谢谢。但仍然需要两次点击:( – mojibuntu

+0

什么是结果值 - 你确定它的即将result.isOK =='1'在第一次点击..如果可能提供一些jsfiddle演示。 – Neha

相关问题