jQuery onFocus textarea,然后在keyup提交

时间:2011-11-01 14:03:58

标签: jquery

您好我正在尝试制作一个jquery ajax提交表单,而且我目前正试图对提交表单进行限制。 我希望用户按Enter键提交表单而不按提交按钮, 但是只有当用户专注于textarea / input字段时,它才会在他/她按下enter时提交!

我试图制作自己的代码并在其中进行编辑以查看哪些有效, 我已经想出了这个代码,但它不能很好地工作:(

$('.addformtextarea').focus(function() {

$(document).keyup(function(e){
    switch (e.keyCode) {
        case 13: //enter
        //code to be 
        break;
    }
});

.addformtextarea是要关注的文本区域。

并且确实返回false;表现与休息相同; ?因为我有一个假的回报;在休息之前;

谢谢:D

3 个答案:

答案 0 :(得分:1)

最好不要绑定输入的keyup事件:

$(".addformtextarea").keyup(function(e) {
    switch (e.which) {
        case 13: //enter
        //code to be 
        break;
    }
});

请注意,我使用的是which而不是keyCode。这只是因为jQuery规范化事件对象以消除任何跨浏览器的不一致。

当前代码的问题在于,一旦focus事件被触发,keyup事件就会绑定到document,并将触发元素是否具有焦点。< / p>

答案 1 :(得分:1)

试试这个:

$('textarea').keydown(function(e) {
    if (e.which == 13) {
        alert('You pressed enter');
        // $('your_form').submit();
    }
});

如果用户在textarea中输入,那么它不会被聚焦吗?我真的不喜欢冗余。

演示:http://jsfiddle.net/cjTu9/4/

答案 2 :(得分:0)

试试这个:

$('.addformtextarea').keyup(function(e){
    switch (e.keyCode) {
        case 13: //enter
        //code to be 
        return false;
    }
});

您无需担心焦点,因为仅在输入具有焦点时才会触发。

只有在使用代码执行此操作时,您才需要返回false以阻止自动提交。