带有Javascript的HTML-验证不起作用

带有Javascript的HTML-验证不起作用,javascript,html,validation,Javascript,Html,Validation,我有以下简单表单的HTML代码。如您所见,其中包含了验证功能。但当我尝试在没有@的情况下包含电子邮件地址时,它不会给出任何错误。因此验证失败了。如果有人能给出一些提示,那将非常有帮助 JavaScript <script language="Javascript"> function validate(){ var allok = true; if(useradd.1_New_User_Name_FirstLast__1.value == ""

我有以下简单表单的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>

函数验证(){
var allok=真;
if(useradd.1\u New\u User\u Name\u FirstLast\u 1.value==“”){
警报('1.新用户名的输入无效(第一个,最后一个)';
返回false;
}
if(useradd.2\u unix\u username\u\u 2.value==“”){
警报(“2.unix用户名的输入无效”);
返回false;
}
如果(useradd.3\u CAT\u client\u Name\u 3.value==“”){
警报(“3.CAT客户端名称的输入无效”);
返回false;
}
if(useradd.4\u Email\u Address\u 4.value.indexOf(“”==-1){
警报('4.电子邮件地址的输入无效,必须包含“字符”);
返回false;
}
if(useradd.7\请求者\名称\首末次\值==“”){
警报('7.请求者名称的输入无效(第一个,最后一个)';
返回false;
}
document.useradd.Submit.disabled=“disabled”;
返回true;
}
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>

1.新用户名(第一个、最后一个):
2.unix用户名:
3.CAT客户端名称:
4.电邮地址:
5.其他访问:
Xaccess
桑巴舞
CVS访问
签入权限
6.附加要求: 7.请求者姓名(第一名、最后一名):
if(useradd.4\u Email\u Address\u 4.value.indexOf(“”==-1){ 警报('4.电子邮件地址的输入无效,必须包含“字符”)


我想你的意思是把@放在这里?

你只是在用
JS
HTML
?还是把你的代码嵌入ASP或其他东西

它完全不受欢迎

我也不明白你的JS中的点符号:

useradd.1_New_User_Name_FirstLast__1
你应使用:

document.getElementById("foo").value;

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

例如:

...
<tr>
    <td>1. New User Name (First,Last):</td>
    <td><input type="edit" name="New_User_Name_FirstLast__1" value="" size="20"></td>
</tr>
...
应该可以解决您的问题。如果这些更改不可能(由于生成的表单或其他原因),您应该使用document.getElementById或HTML5表单验证

[编辑]

当然,电子邮件验证是错误的。请尝试以下操作:

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

它应该可以工作。

那么你的代码在哪里检查电子邮件地址中的
@
字符呢?你好,克里斯蒂安。谢谢你的回复。我尝试了这些建议,但仍然不起作用。我在这里发布整段代码只是为了更好地理解…函数validate(){var allok=true;if(useradd.New\u User\u Name\u FirstLast\u 1.value==“”){alert('1.新用户名(First,Last)的输入无效);return false;}……document.useradd.Submit.disabled=“disabled”;return true;}新用户名(First,Last):对不起,它开始给出1.新用户名的第一个验证错误(当我没有插入文本时)但它不适用于后续领域。有什么想法吗?嘿,我想出来了……其他领域也必须做出类似的改变。因此,理想的解决方案是由Christian works提供。感谢大家。
.value.indexOf("@") == -1