2013-04-04 56 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