[英]Validation for multiple textarea in javascript
我有一個包含2個文本區域的頁面,如果要鍵入的字符超過了單擊提交按鈕時的最大長度,我想驗證每個文本區域。 單擊提交時,下面的代碼存在問題,它只能檢測textarea1是否大於最大長度,而不能檢測其他textarea。 我想做的是可以確定哪個文本區域超出了最大長度,因此用戶可以對其進行更正。 提前致謝。
<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>
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>
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;
}
更改您的以下功能:
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;
}
}
而不是對表單ID進行硬編碼,而是從偵聽器傳遞對的引用:
<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;
}
}
}
}
另一種方法與Raja Dani帖子相同,將一個名為errormessage的新變量放置為txtlength,txtlength1上方的空字符串,將警報替換為在errormessage var中添加這些消息,如果errormessage length> 0且為false,則輸出警報,否則返回true ? :)
那不只是最好的解決方案,而是另一種解決方案。
我是新來的,嘗試在編輯時添加帖子(你們使它變得如此復雜),僅添加評論而不進行編輯,因為我的代表較少,因此我無法評論其他帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.