仅在文本输入中禁用ENTER,但在页面的其余部分允许

时间:2017-06-28 14:59:53

标签: javascript html forms

有一个简单的表单,但是当我使用

禁用ENTER时
<INPUT CLASS=INPUT NAME=CASE3>

它禁止在整个页面上使用ENTER,

我怎么才能预防(不能在这里修改输入标签,所以添加ID不会工作)

<INPUT TYPE="button" value="Cases" onclick="javascript:pfkeyrtn('PF08')">

并允许它

server {
    listen *:80;
    server_name nodeapp.mydomain.com;
    location / {
        proxy_pass http://localhost:3000;
    }
}

server {
    listen *:80;
    server_name goapp.mydomain.com;
    location / {
        proxy_pass http://localhost:5000;
    }
}

谢谢

4 个答案:

答案 0 :(得分:0)

只需将您的听众直接应用于<input>

document.querySelector('#myInput').addEventListener('keydown', /* your func goes here */);

答案 1 :(得分:0)

或者使用jQuery:

<script type="text/javascript">
  $(function(){
    $('#your-input').keydown(function(e) {
      if ( e.keyCode == 13 ) {
        e.preventDefault();
        return false;
      }
    });
  });
</script>

喜欢this Fiddle

答案 2 :(得分:0)

preventDefault()方法告诉用户代理,如果事件未处理,则不应采取其默认操作。

因此,不是将eventListener添加到窗口,而是将其附加到元素本身。

var inpt = document.querySelector("input[name='CASE3']");
inpt.addEventListener("keydown", function(e) {
  if (e.keyCode === 13) {
    e.preventDefault();
    alert("TADA!");
  }
});
<input type="text" name="CASE3" />

答案 3 :(得分:0)

为什么不检查当前聚焦元素是否是输入元素?像这样:

window.addEventListener( 'keydown', ( e ) => {
  const inputFields = [ 'textarea', 'input' ];
  const isButton = e.target.getAttribute( 'type' ) === 'button';
  if ( e.key === 'Enter' && inputFields.indexOf( e.target.nodeName.toLowerCase() ) && !isButton ) {
    e.preventDefault();
  }
} );
相关问题