簡體   English   中英

驗證JavaScript中的多個textarea

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM