【发布时间】:2011-12-28 16:39:52
【问题描述】:
我尝试使用此处找到的一些最大长度函数,但我遇到了一些问题。当用户按下提交按钮时,我试图检查表单的长度,但变量中的值在提交表单之前不会改变。下面是相关代码:
<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 页面。
【问题讨论】:
-
如果您能更具体地说明您尝试过的方法如何不起作用,它可能会帮助人们帮助您。
-
尖尖的,为了清晰起见,我编辑了页面。谢谢。
-
您将“30”作为字符串而不是 30 作为数字传递。这有很大的不同。另请注意,将
event.returnValue设置为false仅适用于 Internet Explorer。在其他浏览器中,您必须调用event.preventDefault(); -
尖尖的,我添加了 event.preventDefault();并通过了 30 作为一个数字,我仍然没有运气。该程序似乎只识别提交表单的更改,但(由于圣诞节周)没有人解释如何或为什么。
-
如果是 .jsp 页面根本就没有关系;当它到达浏览器时,它是 HTML。我会做一个jsfiddle;给我一秒钟...
标签: javascript jsp