2014-10-21 123 views
0

在我提交表單之前,我想檢查輸入中的值。在提交表單前檢查值

這裏我檢查一個值是否等於.5或1,或者不是空字符串。

form.onsubmit = function(e) { 
    var ftimes = document.getElementsByClassName("add_timebox"); 
    var fflag = 0; 
    for(i=0;i< ftimes.length;i++) { 
     var value1 = ftimes[i].value; 
     console.log(value1); 
     if (value1 !==.5 ||value1 !== 1 || (!IsStringEmpty(value1))){ 

      fflag = 1; 
      console.log('inside'); 
     } 

} 
if(fflag==1) { 
    alert('enter again'); 
    return false; 
} 

我對IF語句做了很多更改,試圖使其正確。 但即使我知道如果不應該,它仍然在循環中。

例如,當我提交表單,我有一個輸入值等於0.22 那麼它應該僅僅給我1「內部」,但在不斷重複:

內部 0.22 (空字符串) 內 ....

回答

1

你不告訴你是如何實現你的IsStringEmpty方法,但如果你使用的是這樣的事情,那麼任何數量也是一個非空字符串,那麼你的if語句將始終運行。

function IsStringEmpty(str) { 
    return (!str || 0 === str.length); 
} 

所以你需要改變你的ORs,或者它永遠不會檢查數字條件。

您可以檢查該值是不是一個空字符串,是不同於0.5和1.那麼你的條件應該是這樣的。

if (!IsStringEmpty(value1) && value1 !== 0.5 && value1 !== 1) 

但是,您從窗體中獲取值,所以它將是一個字符串。因此,你正在比較字符串,你需要這個。

if (!IsStringEmpty(value1) && value1 !== ".5" && value1 !== "1") 

雖然你可能會想比較浮動,在這種情況下,你需要這個。

if (!IsStringEmpty(value1) && parseFloat(value1) !== .5 && parseFloat(value1) !== 1)) 

因此,基本上,當您在所有表單域中輸入1,.5或空字符串時,跳過內部塊。但是,如果您在任何字段中都有其他值,那麼該標誌將被設置爲1.如果這不是您的意思,請更新您的問題以更具體。

請檢查Plunker here

希望這會有所幫助。

+0

我的意思是NOT = .5和1 – jfishbow 2014-10-21 23:53:27

0

你必須添加一個休息;一旦if條件滿足,在if條件中陳述。

if (value1 !==.5 ||value1 !== 1 || (!IsStringEmpty(value1))){ 

      fflag = 1; 
      console.log('inside'); 
      break; 

     } 
+0

我不認爲休息會做,因爲它不會顯示警報 – jfishbow 2014-10-21 22:11:58

+1

它肯定會顯示警報,因爲休息只是打破for循環,而不是後面的條件。但是,如果您希望表單在顯示警報後不提交,請添加以下語句。 if(fflag == 1){alert('enter again'); event.returnValue = false; 返回false; } – 2014-10-21 23:05:24

+0

我明白了,但是問題在於IF條件下的內容,無論價值是什麼 – jfishbow 2014-10-21 23:09:05