繁体   English   中英

如何在文本输入上禁用正常提交输入行为并将其替换为我自己的功能?

[英]How can I disable the normal submit on enter behavior on a text input and replace it with a function of my own?

我已经尝试了一些我在stackoverflow和其他地方发现的修复,但我无法让它们中的任何一个正常工作。 它们要么在任何地方禁用输入键,要么根本不工作(或者它们没有被正确解释)。

我需要输入键行为的正常提交来处理除了这一个文本输入之外的所有其他元素,并且在选择文本输入时将其替换为我自己的函数。

如何判断Enter是否被按下

$('input.the-one-text-input').keydown(function(e) {
  if(e.keyCode == 13) { // enter key was pressed
    // run own code
    return false; // prevent execution of rest of the script + event propagation / event bubbling + prevent default behaviour
  }
});

另请注意该页面上的评论

**如果有人从谷歌那里得到了这个(就像我一样),知道“keyup”而不是“keypress”适用于Firefox,IE和Chrome。 “keypress”显然只适用于Firefox。

这不再100%正确,因为它也适用于Chrome。 但是,如果它仍然无法在IE中运行,我也不会感到惊讶。

http://jsfiddle.net/yzfm9/9/

基本上检查哪些输入是聚焦的,并根据它来做自定义的东西

HTML

<form id="nya">
    username <input type="text" id="input_username" /><br/>
    email <input type="text" id="input_email" /><br/>
    hobby <input type="text" id="input_hobby" /><br/>
    <input type="submit" />
</form>

JS

$('#nya').submit(function() {
    var focusedId = ($("*:focus").attr("id"));
    if(focusedId == 'input_email') {
       // do your custom stuff here

       return false;
    }
});

在“onkeydown”上按Enter键时返回false将禁用默认行为。 然后你可以在“onkeyup”事件上调用你的函数。

<input type="text" 
       onkeyup="myFunction()" 
       onkeydown="return event.keyCode != 13;"/>

刚刚玩了jQuery的.keypress()方法,它看起来像是完成了这项工作。

HTML

<form method="post" action="">
    <input type="text" name="submit1" id="submit1" />
    <input type="text" name="noSubmit1" id="noSubmit1" />
    <input type="text" name="submit2" id="submit2" />
    <input type="submit" />
</form>​

JQuery的

​$('#noSubmit1​​​​​​​​​​​​​​​').keypress(function(event) {
    if (event.which == 13 ) {
        event.preventDefault();
    }
});​​

它基本上将一个按键事件添加到正确的输入字段,然后检查按下了哪个键。 如果是输入按钮(13),则会阻止发生默认操作(表单提交)。 在这里看到它: http//jsfiddle.net/cchana/UrHz7/2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM