我试图使用这里找到的一些最大长度函数,但我遇到了一些问题。我试图在用户按下提交按钮时检查表单的长度,但是在提交表单之前,变量中的值不会改变。以下是相关代码:
<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页面。
答案 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();