在javascript中验证多个textarea

时间:2014-02-20 03:35:50

标签: javascript html

我有一个页面有2个文本区域,并且如果键入的字符超过最大长度,则需要验证每个文本区域。单击提交按钮。下面的代码有问题 单击提交时,它只能检测textarea1是否大于最大长度而不是其他textarea。我想要做的是它可以确定哪个textarea超过maxlength,以便用户可以纠正它。提前谢谢。

 <html>
<head>

<script>
function testing()
{
    var txtlength=document.getElementById("txt1").value.length;
    if(txtlength>50)  
    {
        alert("Max1 length reached ");
        return false; 
    }
    else
    {
        return true; 
    }

    var txtlength1=document.getElementById("txt2").value.length;
    if(txtlength1>50)  
    {
        alert("Max2 length reached ");
        return false;
    }
    else
    {
        return true;
    }

}
</script>
</head>
<body>
<form action="test1.html" method="post" onsubmit="return testing();">
    <textarea id="txt1"></textarea>
    <textarea id="txt2"></textarea>
    <input type="submit" value="Submit"/>
</form>
</body>
</html>

5 个答案:

答案 0 :(得分:2)

return true语句只应在代码末尾执行一次。

最终代码看起来应该是这样的:

<script>
function testing()
{
    var txtlength=document.getElementById("txt1").value.length;
    if(txtlength>50)  
    {
        alert("Max1 length reached ");
        return false; 
    }

    var txtlength1=document.getElementById("txt2").value.length;
    if(txtlength1>50)  
    {
        alert("Max2 length reached ");
        return false;
    }

    return true;
}
</script>           

答案 1 :(得分:2)

function testing()
{
    var txtlength=document.getElementById("txt1").value.length;    
    var txtlength1=document.getElementById("txt2").value.length;
    if(txtlength>50)  
    {
        alert("Max1 length reached ");
        return false; 
    }
    else if(txtlength1>50)  
    {
        alert("Max2 length reached ");
        return false;
    }
        return true;  
}

答案 2 :(得分:1)

更改以下功能:

var txtlength=document.getElementById("txt1").value.length;
    if(txtlength>50)  
    {
        alert("Max1 length reached ");
        return false; 
    }
    else
    {
        return true; 
    }

    var txtlength1=document.getElementById("txt2").value.length;
    if(txtlength1>50)  
    {
        alert("Max2 length reached ");
        return false;
    }
    else
    {
        return true;
    }

为:

var txtlength=document.getElementById("txt1").value.length;
        if(txtlength>50)  
        {
            alert("Max1 length reached ");
            return false; 
        }
        else
        {
            var txtlength1=document.getElementById("txt2").value.length;
            if(txtlength1>50)  
            {
            alert("Max2 length reached ");
            return false;
            }
            else
            {
            return true;
            }
        }

答案 3 :(得分:1)

不是对表单ID进行硬编码,而是从侦听器传递对from的引用:

<form ... onsubmit="return testing(this);">

在函数中,遍历表单的控件并检查它们:

function testing(form) {
  var control;

  for (var i=0, iLen=form.elements.length; i<iLen; i++) {
    control = form.elements[i];

    if (control.tagName.toLowerCase() == 'textarea' && control.value.length > 50) {
       alert(control.name + ' must be 50 characters or less');
       return false;
    }
  }
}

}

答案 4 :(得分:0)

另一种方法与Raja Dani帖子相同,将一个名为errormessage的新var作为空字符串放在txtlength,txtlength1之上,用errormessage var中的那些消息替换警报,如果errormessage长度&gt;则输出警告。 0而其他是真的吗? :)

这不是最好的解决方案,而是另一种解决方案。

我是新来的,试图添加编辑帖子(你们让它变得如此复杂)只添加评论而不是编辑它因为我无法评论其他帖子,因为我的代表很低。