0

我正在尝试验证 HTML 表单上的输入。我正在尝试使用一个脚本来验证具有多个相似元素的各种表单。总而言之,大约有 15 个不同的字段,但我只放了 3 个。下面适用于具有所有元素的表单,但在任何没有特定字段的表单上都失败。

if (form.name.value == ""){ // Check if blank
    alert( "\nEnter a name." );
    form.name.focus();
    return false; // Stop the form processing.
    } 

else if ( !/^\w{10}$/.test( form.phone.value )) { // Check for phone
    form.name.style.border=""
    alert( "\nEnter a valid phone number!" );
    form.phone.focus();
    return false; // Stop the form processing.
    } 

else{
 return true; // Submit!

因为这仅在所有人都存在时才有效,所以我要做的就是仅在存在时进行验证。我尝试将验证嵌套在一个语句下,该语句应该在尝试验证之前检查元素,如果元素不存在,它应该继续下一个。

if (document.forms[0].name){ //does field exist?
    if (form.name.value === ""){
        alert( "\nEnter a name." );
        form.name.focus();
        return false; // Stop the form processing.
        }
    else{
        return true; //field ok move on.
        }
    }

else if (document.forms[0].phone){
    if ( !/^\w{10}$/.test( form.phone.value )) {  user
        form.name.style.border=""
        alert( "\nEnter a valid phone number!" );
        form.phone.focus();
        return false; // Stop the form processing.
        } 
    else{
        return true; //field ok move on.
        }
    }
else{
       return true; // Submit!
}

任何帮助将不胜感激!

4

2 回答 2

1

目前您正在检查 (document.forms[0].name) 是否可用,然后如果它已死,则检查 (document.forms[0].phone) 是否为真,然后......然后如果没有一个是真的,它求助于“其他”并且返回是真的。的使用if else意味着如果这部分失败了,你只会在之后再去打扰任何事情。

你可以试试。

if (document.forms[0].name) {
    if ( !/^\w{10}$/.test( form.phone.value )) {  user
        form.name.style.border=""
        alert( "\nEnter a valid phone number!" );
        form.phone.focus();
        return false; // Stop the form processing.
    } 
}
if (document.forms[0].blah) {
    do stuff...
    if fail
        return false;
}
return true;

由于该函数无论如何都会返回为真,因此您无需在其他任何地方声明返回真(这也将停止进程,因为它已经returned停止并停止了)。如果出现问题,停止该过程的唯一原因..因此return false;

于 2012-12-15T04:08:40.523 回答
1

如果您只需要验证表单,那么现在您不需要编写 javascript。您可以使用html5 表单。即使您必须支持没有此功能的浏览器,您也可以将webshims 库放在您的页面中以启用它。

于 2012-12-15T04:41:24.567 回答