2013-04-04 53 views
1

我有一个表单中没有字段可以为空。当用户尝试使用空字段提交表单时,弹出警告框。但是当用户点击提示框中的确定时,表单就会被提交。为什么我的表单在忽略弹出提示时提交

下面是我的代码:

JS:

function checkIt(f) 
    { 
    if (f.elements['username'].value=="" && f.elements['text'].value=="") {  
     alert('Both fields are required'); 
     return false; 
    } else { 
     return true; 
    } 
    } 

形式:

<form method="POST" action="" onSubmit="return checkIt(this)" id="submit"> 
    <input type="text" name="username" /> 
    <label>Enter Your Name</label> 
    <input type="text" name="text" /> 
    <label>Enter Your Text</label> 

<input type="submit" value="Submit Comment"/> 
</form> 

行动代码:

$('.submit').submit(function(){ 

      $.ajax({ 
       url : ...., 
       data : $(' form').serialize(), 
       type: "POST", 
       success : function(){ 
       } 
      }) 

      return false; 
     }) 

我做错了吗?

+1

你尝试过调试的代码? – 2013-04-04 08:31:06

+3

只有当两个输入都为空时,您的测试才会失败。如果其中只有一个被填充,它会将其视为确定。 – Quentin 2013-04-04 08:31:59

+1

无论你的问题是什么,你的问题中没有足够的细节来重现它。 [当我尝试](http://jsbin.com/aputut/1/edit)脚本停止提交表单。 (投票结束不是一个真正的问题) – Quentin 2013-04-04 08:33:46

回答

0

这里是为我工作

$('.submitComment').submit(function(){ 
     var username = document.getElementById("username").value; 
     var text = document.getElementById("text").value; 

     if (username != "" && text != "") { 
      $.ajax({ 
       url : 
       data : $(' form').serialize(), 
       type: "POST", 
       success : function(){ 
       } 
      }) 
     } else { 
      alert('Both fields are required'); 
     } 

     return false; 
    }) 
+0

我不知道这是否是最好的方式,但它适用于我。 – ehp 2013-04-04 10:05:40

0
if (f.elements['username'].value=="" && f.elements['text'].value=="") { 

因为只有BOTH字段为空,表单提交才会阻止。你应该用OR(||)的instrad AND(& &)

+0

虽然它不能解决问题(它解决了代码中存在的一个**不同**问题)。问题表示提示框出现,然后表单提交(因此if条件不能成为原因)。 – Quentin 2013-04-04 08:36:16

+0

提供所有工作正常的信息。 – Vladimirs 2013-04-04 08:38:50