2012-07-19 54 views
0

此電話號碼驗證器不起作用:/。爲什麼?爲什麼這個javascript手機字段表單驗證器不工作?

理想情況下,如果可選電話字段不爲空,則應繼續驗證表單。

電話字段是可選的,不是必需的。

驗證形式:

  • 手機領域是可選的。這意味着它不是必需的。
  • 它應該忽略比較除數字以外的所有內容。
  • 如果數字計數是!= 10個數字,它應該顯示錯誤。
  • 如果計數等於10個數字,但是應當轉嫁給name.php(見HTML)

JavaScript代碼:

function validateForm() { 
var x=document.forms["form"]["name"].value; 
if (x==null || x=="") 
    { 
    alert("Name is required."); 
    return false; 
    } 

var y=document.forms["form"]["email"].value; 
var atpos=y.indexOf("@"); 
var dotpos=y.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=y.length) 
    { 
    alert("Valid email required."); 
    return false; 
    } 

var formValue = document.forms["form"]["number"].value; 
var regExpressionValue = /[^\d.]/g; 
if (formValue !== null) 
{ 
    if (regExpressionValue.test(formValue) !== true) 
    { 
    alert("Optional phone number invalid. Example: [1234567890]."); 
    return false; 
    } 
} 

return true; 

} 

HTML:

<form class="form" id="form" name="form" method="post" action="name.php" onsubmit="return validateForm()" /> 
<input type="text" name="name" id="name" /> 
<input type="text" name="email" id="email" /> 
<input type="tel" name="number" id="number" /> 
<button type="submit" value="Send" />Sign Up</button> 
<div class="spacer"></div> 
</form> 

回答

-4

你有不好的正則表達式和字符串存在檢查電話號碼。看看這個:

function validateForm() { 
    var x=document.forms["form"]["name"].value; 
    if (x==null || x=="") 
    { 
    alert("Name is required."); 
    return false; 
    } 

    var y=document.forms["form"]["email"].value; 
    var atpos=y.indexOf("@"); 
    var dotpos=y.lastIndexOf("."); 
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=y.length) 
    { 
    alert("Valid email required."); 
    return false; 
    } 
    var formValue = document.forms["form"]["number"].value; 
    if (formValue) 
    { 
    var regExpressionValue = /^(\d-?){10}$/g; 
    if (regExpressionValue.test(formValue) !== true) 
    { 
     alert("Optional phone number invalid. Example: [1234567890]."); 
     return false; 
    } 
} 

return true; 
} 
+0

你可不要擴展一下嗎?這不是很有幫助。 – SpaceBeers 2012-07-19 09:11:21

+0

感謝擴展我的if(formValue)是錯誤的,它真的幫了大忙! (也是你的正則表達式) – 2012-07-21 00:37:46

0

你的正常表達是錯誤的。試試這個,而不是

if (/^\d{10}$/.test(formValue) === false) { 
    alert("Optional phone number invalid. Example: [1234567890]."); 
    return false; 
} 
相關問題