JSP textarea长度检查问题

时间:2011-12-28 16:39:53

标签: javascript jsp

我试图使用这里找到的一些最大长度函数,但我遇到了一些问题。我试图在用户按下提交按钮时检查表单的长度,但是在提交表单之前,变量中的值不会改变。以下是相关代码:

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

以下是创建弹出窗口的代码。该值始终是加载页面时的值,直到它到达$(“#command”)。submit();然后它将是用户输入的任何内容。

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”);'到textarea块和函数

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

}  

这没有任何作用。用户仍然可以输入并提交表单。

使用警告框我获取document.getElementById(当用户点击提交按钮时),收到的值是页面加载时表单的初始值。用户可以更改文本区域中的值,但警告框中的值将始终是框中的初始值。

我还应该提一下这是一个.jsp页面。

1 个答案:

答案 0 :(得分:0)

好的,这是一些问题:

  • event不是所有浏览器中的全局变量。您的<textarea>标记应如下所示:

    <textarea onkeypress='return checkMaxLength(event, this, 30)'></textarea>
    
  • Firefox中名称“maxLength”似乎有问题。因此,我将名称更改为“checkMaxLength”。

  • 防止默认操作的方法在符合标准的浏览器中与在IE中不同。在这些浏览器中,您必须从事件对象中调用方法“preventDefault()”。因此:

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