我得到了具有以下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
。任何想法如何解决,将受到欢迎。谢谢。
答案 0 :(得分:2)
不会将表单提交作为keyup
事件的默认行为。对此为时已晚。
您需要在keydown
或keypress
事件期间捕获它。
答案 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');
}
});