我有一个有趣的案例:我正在使用this plugin作为标记输入字段。当我单击“输入”将标签添加到标签字段时,表单会提交。所以我把下面的代码放在一边,以防止表单提交:
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
现在,当我按下输入标签输入时,不会在字段中创建新标签。标签插件中使用默认输入行为。
有没有办法绕过它而不涉及更改插件?
答案 0 :(得分:0)
您可以使用event.target检查keydown事件的发生位置。
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13 && !$(e.target).is("input[name=fieldName]")) {
event.preventDefault();
return false;
}
});
});
答案 1 :(得分:0)
问题是,在处理window
事件侦听器之前,form
事件侦听器永远不会到达,例如:submit。
事件总是冒出来的。因此form
总是在window
之前。因此,在form
事件发生时,window
已经发生了默认情况,因此无法帮助阻止默认。
将keydown侦听器添加到form
本身,它应该可以工作。
编辑:甚至更好,因为更准确 - 只将keydown侦听器添加到您要阻止的字段默认。
答案 2 :(得分:0)
我找到了解决方案:
$(document).ready(function() {
$('#form-content').on('submit',function(event, can_submit){
if(!can_submit){
event.preventDefault();
}
})
});
function formSubmit() {
$('#form-content').trigger('submit', [true])
}
然后我使用链接作为保存按钮:
<a class="btn btn-primary btn-lg btnSubmit" onclick="formSubmit()" >{% trans "Save" %}</a>
感谢您的回答!