2013-05-16 107 views
0

我有一個名稱的文本輸入。我只想在任何地方只允許使用字母和不連續的空格,除了在輸入的開始或結束時不允許使用空格。所以我必須使數字,符號和連續的空格無效。驗證文本輸入中的名稱

實例:

  1. rohit_kumar_mehta
  2. rohit__kumar_mehta
  3. rohit_kumar__mehta
  4. _rohit_kumar_mehta
  5. __rohit_kumar_mehta
  6. rohit_kumar_mehta_

_ - 意味着單個空

__ - 意味着雙空白

字符串1是正確的。

字符串2,3,4,5和6是錯誤的。

我嘗試下面的代碼:

<!DOCTYPE html> 
<html> 
<head> 
<script> 

function validateForm() { 
    var x = document.myForm.fname.value; 
    var spacepos = x.indexOf(" "); 
    var numbers = /^[0-9]+$/; 
    var n = x.split(" "); 
    //x.innerHTML = n[0]; 

    var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?"; 
    for (var i = 0; i < x.length; i++) { 
     if ((iChars.indexOf(x.charAt(i)) != -1)) { 
      alert("invalid...1"); 
      return false; 
     } 
     /**else if ((numbers.indexOf(x.numberAt(i)) != -1) && spacepos > 0) { 
      alert("invalid...3"); 
      return false; 
     }**/ 
    } 

    var alphabets = /^[a-zA-Z]+$/; 

    if ((n[0].match(alphabets) && spacepos > 0)) { 
     alert("doublke space......1"); 
    } 
    /*else if ((n[1].match(alphabets) && spacepos > 0)) { 
     alert("doublke space.....2"); 
    }*/ 
    else if ((x.match(alphabets) || spacepos > 0)) { 
     alert("ok..2"); 
     return true; 
    } 
    else { 
     alert("invalid..2"); 
     return false; 
    } 

    /**if(x==" ") { 
     alert("invalid..3"); 
     return false; 
    } 
    else { 
     alert("ok...3") 
     return true; 
    }**/ 
} 
</script> 
</head> 
<body> 
    <form name="myForm" onsubmit="return validateForm()" method="post"> 
     First name: <input type="text" name="fname"> 
     <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 
+2

那麼,那些合法包含'''或名稱'-'? – ajp15243

+0

試試這個/(\ w + \ s \ w +)+/g – exexzian

回答

3

你的功能可能是這樣的:

function validateForm() { 
    var value = document.myForm.fname.value; 
    if(value.match(/^[a-zA-Z]+(\s{1}[a-zA-Z]+)*$/)) { 
     return true; 
    } else { 
     alert('Wrong name'); 
     return false; 
    } 
} 

該功能將允許進入,如果沒有數字和特殊由一個或多個單詞的名稱字符,在單詞之間有一個空格並且沒有開始或結尾空格。這裏

http://jsbin.com/iducuq/1/edit

0

嘗試分析以相反的方式對字符串:

function stripInvalidChars(input){ 
    var re = /[a-zA-Z]+/g; 
    var match = new Array(); 
    match = re.exec(input); 
    return match.join(' '); 
} 

此功能僅匹配的有效字符(修剪空格)。 然後你可以檢查原來的字符串對這個新的字符串,如果他們是相同的字符串是有效的。

2

嘗試validateNameField()方法,這可以幫助你...

function validateNameField() { 
    $value = $('#name').val(); 
    if(/^[a-zA-Z]+(\s{1}[a-zA-Z]+)*$/.test($value)) { 
     alert('Acceptable valid Name'); 
    } else { 
     alert('invalid Name'); 
    } 
}