来自提交的jquery无法正确处理,event.preventDefault()无法正常运行

时间:2018-10-31 15:50:39

标签: javascript jquery

我得到了具有以下HTML的表单(在使用bootbox.js的模式窗口中)

<div class="bootbox-body">
    <form id="change_phrase" style="">
        <div class="form-group">
            <label for="phrase_fld">Фраза</label>
            <input type="text" name="dialog_field" class="form-control" id="phrase_fld" placeholder="Enter phrase">
        </div>
    </form>
</div>

enter字段中,我需要使用以下代码来处理input的按键操作:

$(document).on('keyup', '#phrase_fld', function(e){
    e.preventDefault();
    e.stopPropagation();
    console.log(e);     
    if(e.keyCode == 13){                    
      $(this).parent().parent().parent().parent().parent().find('button.btn-success').trigger('click');
     }
 });

但是当我在enter输入字段中按#phrase_fld时,我的html页面重新加载,并且?dialog_field=some+new+phrase查询字符串附加到浏览器的URL中。也许e.preventDefault()无法正常工作?在我的控制台中,我看到isDefaultPrevented: f。任何想法如何解决,将受到欢迎。谢谢。

2 个答案:

答案 0 :(得分:2)

不会将表单提交作为keyup事件的默认行为。对此为时已晚。

您需要在keydownkeypress事件期间捕获它。

答案 1 :(得分:-1)

尝试此代码:

$('body').delegate('#phrase_fld', 'keypress', function(e) {
        if(e.keyCode === 13) {
            e.preventDefault();
            console.log(e);
            $(this).parent().parent().parent().parent().parent().find('button.btn-success').trigger('click');
        }     
});