2011-12-28 93 views
1

我試圖使用這裏找到的一些最大長度函數,但我遇到了一些問題。我試圖在用戶按下提交按鈕時檢查表單的長度,但在提交表單之前,變量中的值不會更改。以下是相關代碼:JSP textarea長度檢查問題

<tr> 
<td align="left"><b>Comments:</b><br> 
<form:textarea path="currentProjTask.comments" id="currComments" cols="100" rows="10" /></td> 
</tr> 

下面是創建彈出窗口的代碼。該值將始終是頁面加載時的值,直到它到達$(「#command」)。行,那麼它將是用戶輸入的任何內容。

var newcomments = document.getElementById("currComments").value; 
var currentcomments = newcomments.length; 
alert("currentcomments = " + currentcomments + " newcomments = " + newcomments); 
    $("#command").submit(); 
    var newcomments = document.getElementById("currComments").value; 
var currentcomments = newcomments.length; 
    alert("currentcomments = " + currentcomments + " newcomments = " + newcomments); 

我已經嘗試了許多不同的方法來檢查長度,包括按鍵功能等,這些都不工作,但沒有人扔任何錯誤。

我非常感謝您的幫助,非常感謝。

編輯清晰度:

我試過的功能沒有做任何事情。例如,如果我加入onkeydown ='return maxLength(this,「30」);'到文本區塊,並且功能

function maxLength(field,maxChars) 
{ 
    if(field.value.length >= maxChars) { 
     event.returnValue=false; 
     alert("more than " +maxChars + " chars"); 
     return false; 
    } 

} 

這什麼都不做。用戶仍然可以鍵入並提交表單。

使用提示框獲取document.getElementById(當用戶點擊提交按鈕時),收到的值是頁面加載時窗體的初始值。用戶可以更改文本區域中的值,但警告框中的值始終是框中的初始值。

我還應該提到這是一個.jsp頁面。

+0

這可能會幫助人幫你,如果你將是一個更具體一點究竟如何,你已經嘗試過的東西不起作用。 – Pointy 2011-12-28 16:48:54

+0

尖尖的,我編輯的頁面清晰。謝謝。 – 2011-12-28 17:07:27

+0

您將「30」作爲字符串而不是30作爲數字傳遞。這有很大的不同。另請注意,將'event.returnValue'設置爲'false'僅適用於Internet Explorer。在其他瀏覽器中,你必須調用'event.preventDefault();' – Pointy 2011-12-28 17:17:55

回答

0

OK,這裏有一些問題:

  • event是不是在所有瀏覽器的全局變量。你<textarea>標籤應該是這樣的:

    <textarea onkeypress='return checkMaxLength(event, this, 30)'></textarea> 
    
  • 「最大長度」的名字似乎是有問題的Firefox瀏覽器。出於這個原因,我將名稱更改爲「checkMaxLength」。

  • 在符合標準的瀏覽器中,防止默認操作的方式與在IE中不同。在這些瀏覽器中,您必須從事件對象調用方法「preventDefault()」。因此:

    event.returnValue = false; 
    if ('preventDefault' in event) event.preventDefault(); 
    
+0

這工作,非常感謝你的幫助。 – 2011-12-29 13:22:25