Javascript名称姓氏验证不起作用

时间:2015-10-09 12:17:39

标签: javascript validation

嘿伙计们想要在javascript中验证姓名,姓氏等。

var regex = /^[A-Za-z ]{1,20}$/;

当我输入harun(显然是真的)但是它给出了假,当ı打出harun12时它也会给出错误。任何人都可以告诉我这个代码做错了什么?

功能检查(){

            var name = document.getElementById('<%= txt2.ClientID%>');
            var surname = document.getElementById('<%= txt3.ClientID%>');

            var textregex = /^[A-Za-z ]{1,20}$/;
            alert(textregex.test("harun"));

            if ((name.value == '') || (textregex.test(name) == false) ) {
                $("#name_error").dialog("open");
                $("#txt2").val('');

            }
            if ((surname.value == '') || (textregex.test(surname) == false){
                $("#surname_error").dialog("open");
                $("#txt3").val('');

            }


        }

    });

        <asp:TableRow ID="TableRow2" runat="server">
            <asp:TableCell>Name:</asp:TableCell><asp:TableCell>
                <asp:TextBox ID="txt2" runat="server" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txt2" />
            </asp:TableCell>
        </asp:TableRow>

        <asp:TableRow ID="TableRow3" runat="server">
            <asp:TableCell>Surname:</asp:TableCell><asp:TableCell>
                <asp:TextBox ID="txt3" runat="server"/>
               <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txt3" />
            </asp:TableCell>
        </asp:TableRow>
    </asp:Table>

2 个答案:

答案 0 :(得分:1)

根据你的评论name指的是dom对象而不是它的值,所以请使用

alert(textregex.test(name.value)); 
//                       --^--

var name = document.getElementById('<%= name.ClientID%>').value;
//                                                        --^--

<强>更新

if ((name.value == '') || (textregex.test(name.value) == false)) {
  //                                           --^--
  $("#name_error").dialog("open");
  $("#txt2").val('');
}
if ((surname.value == '') || (textregex.test(surname.value) == false)) {
  //                                                 --^--
  $("#surname_error").dialog("open");
  $("#txt3").val('');
}

答案 1 :(得分:0)

使用此:

var regex = /^[A-Za-z1-9]{1,20}$/;
regex.test('text');//True
regex.test('text123');//True

你错了,验证只是确定你有字母字符,所以当它包含数字时会造成虚假损坏。

如果您想允许这样的银行空间使用:

var regex = /^[A-Za-z1-9\s]{1,20}$/;
regex.test('text123 ');//True
regex.test('text 123');//True
regex.test('text test2');//True