我有一个页面有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>
答案 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而其他是真的吗? :)
这不是最好的解决方案,而是另一种解决方案。
我是新来的,试图添加编辑帖子(你们让它变得如此复杂)只添加评论而不是编辑它因为我无法评论其他帖子,因为我的代表很低。