2011-05-16 59 views
4

我需要使用JS函数来禁用输入密钥。我目前面临的一个问题,我的春天形式我需要Javascript函数来禁用输入密钥

<form:textarea path="name" onkeypress="return noenter()" 

这里是我目前使用

<script> function noenter() { alert("Testing"); 
    return !(window.event && window.event.keyCode == 13); 
    } </script> 

出于某种原因,功能,警报工作时,我按下回车键,但仍面临同样的异常

HTTP状态415 -

类型状态报告

消息

描述,因为该请求实体是在()不是由 请求的资源用于所请求的 方法支持的格式 服务器拒绝该请求 。的Apache Tomcat/6.0.29

+0

'window.event'不是跨浏览器,我想。这是一个IE的东西... – 2011-05-16 12:29:19

+0

有没有什么特别的关于您正在使用的textareas?通常,HTML textarea元素将ENTER变成换行符,而不是提交表单,不需要JavaScript。 – 2011-05-16 17:56:41

回答

10

这应该工作:

标记:

<form:textarea path="name" onkeypress="return noenter(event)"> 

的JavaScript:

function noenter(e) { 
    e = e || window.event; 
    var key = e.keyCode || e.charCode; 
    return key !== 13; 
} 

现场演示:http://jsfiddle.net/Fj3Mh/

+0

仍然无效,我正在使用Firefox 4.0.1 – 2011-05-16 13:17:08

+0

@Ali检查事件类型和键值。把这个权利放在return语句之前:'alert('e.type:'+ e.type +'; key:'+ key);' - 它应该提醒“keypress”和一个数字。我已经用**现场演示**更新了我的答案。 – 2011-05-16 14:08:31

1

你需要在keyup和keydown事件中解决这个问题。浏览器使用与实际网页无关的回车键。所以你需要在keyup或keydown事件中停止事件传播。在按键事件发出时,浏览器本身已经收到它,并且无法阻止它进行处理。这是特定于输入键和其他几个。字符键如'a'和'b'不会遇到这个问题。

0
function stopRKey(evt)var evt =(evt)? evt:((event)?event:null); var node =(evt.target)? evt.target:((evt.srcElement)?evt.srcElement:null); ((evt.keyCode == 13)&&(node.type ==“text”)){return false;} } document.onkeypress = stopRKey;
+1

你应该真的添加一些解释,为什么这应该工作 - 你也可以添加代码以及代码本身的注释 - 目前的形式,它没有提供任何可以帮助其他社区的解释了解你做了什么来解决/回答问题。这对于已经有答案的问题尤其重要。 – ishmaelMakitla 2016-09-30 10:14:59