2012-11-27 71 views
-2
<script language="JavaScript"> 
    function validate(x) { 



     var cur_p = document.getElementById('current').value; 
     var new_p = document.getElementById('new').value; 
     var con_p = document.getElementById('confirm').value; 

     document.getElementById('msg_p').innerHTML = ''; 
     document.getElementById('msg_cur').innerHTML = ''; 


     if(x != cur_p) 
     { document.getElementById('msg_cur').innerHTML = ' Your password was incorrect'; 
      return false; 
     } 

     if(new_p != con_p) 
     { document.getElementById('msg_p').innerHTML = 'Passwords do not match'; 
      return false; 
     } 

     return (true); 

    } 
</script> 

HTMLJavaScript不能同時工作

<form action='change-password.php' method='post' onsubmit="return validate('<?=$current?>')" > 

我有這些對我的代碼。 我無法同時顯示這些ifs的結果。

if(x != cur_p) 
and 
if(new_p != con_p) 

如果我放置

if(x != cur_p){} 

if(new_p != con_p){} 

如果響應結果頂端(X!= cur_p)將顯示,而後者不會

,反之亦然。

我該怎麼讓這兩個IFS (假設這些條件都滿足)

回答

2

首先,你有一個錯字在你的代碼

document.getElementById('msg_p').innerHTM = ''; <-- Missing an L 

二,當然,如果你回來,它退出功能。所以代碼不會執行這兩個語句。

變化

if(x != cur_p) 
    { document.getElementById('msg_cur').innerHTML = ' Your password was incorrect'; 
     return false; 
    } 

    if(new_p != con_p) 
    { document.getElementById('msg_p').innerHTML = 'Passwords do not match'; 
     return false; 
    } 

    return (true); 

var isValid = true; 
    if(x != cur_p) 
    { document.getElementById('msg_cur').innerHTML = ' Your password was incorrect'; 
     isValid = false; 
    } 

    if(new_p != con_p) 
    { document.getElementById('msg_p').innerHTML = 'Passwords do not match'; 
     isValid = false; 
    } 

    return isValid; 
+0

'HTM'中缺失的'L'不是我猜測的原因。 但你的第二個解決方案是偉大的。 非常感謝你@epascarello你節省了我的一天 –

3

的結果,問題是,你正在返回後的第一個false,所以第二個是從未達到。相反,在每個布爾變量中設置一個布爾變量並返回布爾變量(如果兩個都失敗,將爲true,如果兩個都失敗,則返回false)。

// Boolean variable starts true, will get set to false if either condition is met: 
    var okFlag = true; 
    if(x != cur_p) 
    { document.getElementById('msg_cur').innerHTML = ' Your password was incorrect'; 
     // Set to false 
     okFlag = false; 
    } 

    if(new_p != con_p) 
    { document.getElementById('msg_p').innerHTML = 'Passwords do not match'; 
     // Set to false 
     okFlag = false; 
    } 
    // Return the flag, which is either true or false. 
    return okFlag; 
+1

+1理解的問題! – ahren