【问题标题】:JSP textarea length check issuesJSP textarea长度检查问题
【发布时间】: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


【解决方案1】:

好的,这里有一些问题:

  • event 不是所有浏览器中的全局变量。你的&lt;textarea&gt; 标签应该是这样的:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多