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 = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?0123456789";
    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>
4

3 回答 3

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

于 2013-05-16T06:26:42.717 回答
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');
    }
}
于 2013-05-16T06:38:30.837 回答
0

尝试以相反的方式分析字符串:

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

此函数将仅匹配有效字符(修剪空格)。然后您可以根据这个新字符串检查原始字符串,如果它们相同,则该字符串是有效的。

于 2013-05-16T06:27:54.773 回答