2011-10-21 83 views
1

我把表單驗證與跨度在我前面的例子 cannot display all warning message in form validation with span使用多量程誤差類單文本框

但是當我使用超過1個驗證單個字段,然後我面臨的問題在跨顯示像

var x=document.forms["reg"]["email"].value; 
    var atpos=x.indexOf("@"); 
    var dotpos=x.lastIndexOf("."); 
if(x ==null || x=="") 
{ 
    document.getElementById("error2").innerHTML = "enter Email" 

    $var=false; 
} 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
{ 
    document.getElementById("error3").innerHTML = "enter correct Email" 
    $var=false; 
} 

,並在表單字段是

   <td>Email:</td> 
       <td><input type="text" name="email" id="email" /><span id="email_error" style="color:red;"></span> 
       <span id="error2" style="color:red;"></span> 
       <span id="error3" style="color:red;"></span></td> 

如果我用這個代碼,並保留字段爲空則顯示像兩個錯誤 「輸入電子郵件輸入正確的電子郵件」。我怎樣才能解決這個問題?

回答

1

因爲您的腳本在頁面加載後立即調用,並且沒有提供任何值,sp可以按預期運行,您可以在其周圍放置一個函數,例如調用formonsubmit或內聯事件處理函數如電子郵件input元素上的onblur

我不知道什麼$var是,但它是未申報

試試這個

<input type="text" name="email" id="email" onblur="checkEmailField()"/> 

和下面的函數,這不會顯示「輸入電子郵件」,除非用戶專注於電子郵件字段,然後移動遠離田野而不進入任何東西。

function checkEmailField(){ 


var x=document.forms["reg"]["email"].value; 
    var atpos=x.indexOf("@"); 
    var dotpos=x.lastIndexOf("."); 
if(x ==null || x=="") 
{ 
    document.getElementById("error2").innerHTML = "enter Email" 
document.getElementById("error3").innerHTML = ""; 
    $var=false; 
}else 

if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length && x != "" && x!=null) 
{ 
document.getElementById("error2").innerHTML = ""; 
document.getElementById("error3").innerHTML = "enter correct Email" 

$var=false; 
} 
} 
+0

$ var是一個空變量,我用它來放置這個值。在這個函數的最後我檢查$ var.if的值是否爲false然後我返回false;否則返回true; – omnath

+0

和另一個問題我的表格很大,並有許多字段在密碼(最小長度,空間不允許,密碼和重新輸入密碼匹配),所以我怎麼能管理所有這些驗證在單一領域的函數調用模糊或其他? – omnath

+0

我可以建議一個很好的方式來理解是看例子,我認爲這將是一個很好的開始,http://www.tizag.com/javascriptT/javascriptform.php – david