使用Javascript的HTML - 验证不起作用

时间:2014-05-08 09:55:48

标签: javascript html validation

我有简单表单的以下HTML代码。如您所见,包含验证功能。但是,当我试图包含没有@的电子邮件地址时,它不会给出任何错误。因此验证失败了。如果有人可以提供一些提示,那将非常有用。

的JavaScript

<script language="Javascript">
    function validate(){
        var allok = true;
        if(useradd.1_New_User_Name_FirstLast__1.value == ""){
            alert('Invalid input for 1. New User Name (First,Last)');
            return false;
        }
        if(useradd.2_unix_username__2.value == ""){
            alert('Invalid input for 2. unix username');
            return false;
        }
        if(useradd.3_CAT_client_Name__3.value == ""){
            alert('Invalid input for 3. CAT client Name');
            return false;
        }
        if(useradd.4_Email_Address__4.value.indexOf("") == -1){
            alert('Invalid input for 4. Email Address, this must include "" character(s)');
            return false;
        }
        if(useradd.7_Requesters_Name_FirstLast__7.value == ""){
            alert('Invalid input for 7. Requesters Name (First,Last)');
            return false;
        }
        document.useradd.Submit.disabled="disabled";
        return true;
    }
</script>

HTML

<form name="useradd" method="Post" action="mailto:sholikar@yahoo.com" onSubmit="return validate();">
    <table width="100%" border="2" cellpadding="5" cellspacing="0">
        <tr>
            <td>1. New User Name (First,Last):</td>
            <td><input type="edit" name="1_New_User_Name_FirstLast__1" value="" size="20"></td>
        </tr>
        <tr>
            <td>2. unix username:</td>
            <td><input type="edit" name="2_unix_username__2" value="" size="10"></td>
        </tr>
        <tr>
            <td>3. CAT client Name:</td>
            <td><input type="edit" name="3_CAT_client_Name__3" value="" size="20"></td>
        </tr>
        <tr>
            <td>4. Email Address:</td>
            <td><input type="edit" name="4_Email_Address__4" value="" size="20"></td>
        </tr>
        <tr>
            <td valign=top>5. Additional Access: </td>
            <td valign=top>
                <input type="checkbox" name="Xaccess__5" value="Yes">Xaccess<br>
                <input type="checkbox" name="Samba__5" value="Yes">Samba<br>
                <input type="checkbox" name="CVS_Access__5" value="Yes">CVS Access<br>
                <input type="checkbox" name="Check-in_rights__5" value="Yes">Check-in rights<br>
            </td>
        </tr>
        <tr>
            <td>6. Additional requirement:</td>
            <td><input type="edit" name="6_Additional_requirement__6" value="" size="20"></td>
        </tr>
        <tr>
            <td>7. Requesters Name (First,Last):</td>
            <td><input type="edit" name="7_Requesters_Name_FirstLast__7" value="" size="20"></td>
        </tr>
        <tr>
            <td align="right"><input type="reset" name="Reset" value="Reset Form"></td>
            <td align="left"><input type="submit" name="Submit" value="Submit"></td>
        </tr>
    </table>
</form>

3 个答案:

答案 0 :(得分:1)

  

if(useradd.4_Email_Address _4.value.indexOf(“”)== -1){       alert('4.电子邮件地址无效输入,必须包含“”字符');

我认为你打算把@放在“”这里?

答案 1 :(得分:0)

您是否只使用JSHTML?或者你是否在ASP或其他东西中嵌入你的代码?

<script language="Javascript">它完全被弃用了。

我也不理解你的JS中的点符号:

useradd.1_New_User_Name_FirstLast__1

您应该使用:

document.getElementById("foo").value;

答案 2 :(得分:0)

您的问题是,输入名称以数字开头。

例如:

...
<tr>
    <td>1. New User Name (First,Last):</td>
    <td><input type="edit" name="New_User_Name_FirstLast__1" value="" size="20"></td>
</tr>
...

...
if(useradd.New_User_Name_FirstLast__1.value == ""){
    alert('Invalid input for 1. New User Name (First,Last)');
    return false;
}
...

应该解决你的问题。如果这些更改不可能(由于生成的表单或其他内容),您应该使用document.getElementById或HTML5表单验证。

[编辑]

当然,电子邮件验证是错误的。试试这个:

.value.indexOf("@") == -1

它应该有用。