2011-07-08 10 views
0

このスクリプトをjspファイルに追加します。エラー:Javascriptは常にtrueを返します

この関数は、式と一致するものがないなど、失敗したシナリオでも常にtrueを返します。

なぜそれが起こるのですか?これを解決するにはどうすればよいですか?

<script type="text/javascript"> 
function validate() 
{ 
    document.getElementById("user").innerHTML=""; 
    document.getElementById("pass").innerHTML=""; 
    document.getElementById("mail").innerHTML=""; 
    document.getElementById("number").innerHTML=""; 

    var expression = /^[a-zA-Z_.0-9]+$/; 
    var mailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}+$/; 
    var numberExp = /^[0-9]+$/; 
    if(!document.getElementById('username').value.match(expression)) 
    { 
     document.getElementById('username').focus(); 
     document.getElementById("user").innerHTML=" Enter valid user name"; 
     return false; 
    } 
    if(document.getElementById('password').value.length == 0) 
    { 
     document.getElementById('password').focus(); 
     document.getElementById("pass").innerHTML = "Fill Password field"; 
     document.getElementById("pass").style.visibility = "visible"; 
     return false; 
    } 
    if(document.getElementById('cnfpassword').value.length == 0) 
    { 
     document.getElementById('cnfpassword').focus(); 
     document.getElementById("pass").innerHTML = "Fill confirm Password field"; 
     document.getElementById("pass").style.visibility = "visible"; 
     return false; 
    } 
    if(document.getElementById('password').value != document.getElementById('cnfpassword').value) 
    { 
     document.getElementById('password').focus(); 
     document.getElementById("pass").innerHTML = "Password and confirm password Not match"; 
     document.getElementById("pass").style.visibility = "visible"; 
     return false; 
    } 
    if(!document.getElementById('emailid').value.match(expression)) 
    { 
     document.getElementById('emailid').focus(); 
     document.getElementById("mail").innerHTML=" Enter valid E-mailID"; 
     document.getElementById("mail").style.visibility = "visible"; 
     return false; 
    } 
    if(!document.getElementById('number').value.match(numberExp)) 
    { 
     document.getElementById('number').focus(); 
     document.getElementById("number").innerHTML=" Enter only numbers"; 
     document.getElementById("number").style.visibility = "visible"; 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 
+0

あなたは再集計する必要があります! –

+0

こんにちは@karthikあなたもあなたのHTMLの例を表示することができますか? –

+0

http://jsfiddle.net/に貼っていただけますか? –

答えて

3

リファクタリングのアドバイス以外に、最も簡単なことは、Firebugを使用して何が間違っているのかをデバッグすることです。それはあなたに頭痛の多くを保存します

+0

+1を編集しました。このようなjsの大きな部分の問題を特定しようとするのは簡単ではありません。 –

3

変更 document.getElementById('password').value.length == 0

document.getElementById('password').value.length === 0

JavaScriptで

にすべて以下

はtrueを返します

0==""  
0== "0" 
false== "0" 
null== undefined 
0==' \t\r\n ' 

ソリューションすべて以下

を返します偽

0===""  
0=== "0" 
false=== "0" 
null=== undefined 
0===' \t\r\n ' 

"=="は "!="オペレータは、強制 2つの値に変換しようとします比較が行われる前の同じタイプ。

「===」「!==」オペレータは、上記に述べてきた何

+0

にコピーしました。 – karthik

+3

@Karthik ==!= === Javascript –

+0

火災や類似のものを使用すると、問題がどこにあるのかを正確に特定し、修正するのに役立ちますので、回答 –

1

があり、比較の時にタイプと値を確認します(また、アイデンティティ演算子として知っています)正しい、elseは最後のifにのみ対応していました。

また、==は===と同じではありません。

また、関数内にreturn文を1つだけ持つ方がよい場合もあります。

関連する問題