2013-04-11 172 views
2

此javascript函數在窗體中查找錯誤並將其列出。如果有錯誤,它會創建一個錯誤覆蓋複選框,以便即使出現錯誤也能提交。目前代碼不能識別複選框何時被選中。顯然,第一條if語句總是被發現是真實的。想法?複選框值在選中時不會從false更改爲true

function check1() 
{ 
    // c_ierrors is the id of the input tag inserted below within the c_erros div 

    if(document.getElementById("c_ierrors")==null || document.getElementById("c_ierrors").checked!="true") 
    { 
    //if javascript generated form error overide checkbox does not exist or exists but is not true then list errors and don't submit the form  
    //code to generate divs listing errors 
    // 
     if(error=="") 
     { 
      //submit form 
      return true; 
     } 
     else 
     { 
      error += "<div id=\"c_erow\"><input type=\"checkbox\" id=\"c_ierrors\" name=\"override\" value=\"y\" >Override Errors</div>" //add checkbox to submit form despite errors 
      document.getElementById("c_errors").innerHTML=error; 
      alert (document.forms["cform"]["override"].checked);  
      return false; //stay on page don't submit form 
     } 
    } 
    else 
    { 
     //if override checkbox (exists) and is true 
     return true; 
    } 
} 

回答

2

的問題是在第一第二部分的if語句,你比較

document.getElementById("c_ierrors").checked!="true" 

爲字符串爲您提供了錯誤的結果比較一個布爾值。你可以在你的JavaScript控制檯檢查這一點,

bool_val = true 
bool_val == "true" # returns false 

您可能需要比較true或只是把它作爲一個布爾值。例如。

document.getElementById("c_ierrors").checked != true 

!document.getElementById("c_ierrors").checked 
+0

的確是謝謝。即使經過很多次代碼,我完全錯過了。 – user2268439 2013-04-11 02:16:38

1

爲了找到是否被選中,您不需要評估它是否爲真,尤其是對於字符串值。

你只需要找到它是否.checked

如果你想找到,如果它不是.checked只需使用:

!document.getElementById("c_ierrors").checked 

全碼:

document.getElementById("c_ierrors")==null||document.getElementById("c_ierrors").checked 

這將只是工作細

jsFiddle

+0

感謝克里斯託弗。這種方法可以解決我的問題,它也指出我需要測試布爾值true而不是字符串「true」。 – user2268439 2013-04-11 02:13:48

相關問題