Javascript jQuery防止默认问题
我有一个有趣的例子:我正在使用一个标记输入字段。当我单击enter将标记添加到标记字段时,表单将提交。因此,我将代码放在下面,以防止表单提交:Javascript jQuery防止默认问题,javascript,jquery,html,twitter-bootstrap,Javascript,Jquery,Html,Twitter Bootstrap,我有一个有趣的例子:我正在使用一个标记输入字段。当我单击enter将标记添加到标记字段时,表单将提交。因此,我将代码放在下面,以防止表单提交: $(document).ready(function() { $(window).keydown(function(event){ if(event.keyCode == 13) { event.preventDefault(); return false; }
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
现在,当我在标记输入中按enter键时,不会在字段中创建新标记。默认的输入行为在标签插件中使用
有没有一种方法不需要更改插件?您可以使用event.target检查keydown事件发生的位置
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13 && !$(e.target).is("input[name=fieldName]")) {
event.preventDefault();
return false;
}
});
});
您可以使用event.target检查keydown事件发生的位置
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13 && !$(e.target).is("input[name=fieldName]")) {
event.preventDefault();
return false;
}
});
});
问题是,在这里,在处理
表单
事件侦听器之前,它从未涉及到窗口
事件侦听器的问题,例如:submit。
事件总是在dom中冒泡。因此,窗体
总是出现在窗口
之前。因此,防止默认是没有帮助的,因为当涉及到窗口
事件时,表单
已经发生了默认。
将向下键侦听器添加到表单
本身,它应该可以工作
编辑:或者更好,因为更精确-只将按键侦听器添加到您想要默认的字段。问题是,在处理
表单
事件侦听器之前,它从来没有涉及到窗口
事件侦听器,例如:submit。
事件总是在dom中冒泡。因此,窗体
总是出现在窗口
之前。因此,防止默认是没有帮助的,因为当涉及到窗口
事件时,表单
已经发生了默认。
将向下键侦听器添加到表单
本身,它应该可以工作
编辑:或者更好,因为更精确-只将键控侦听器添加到您想要默认的字段。我找到了解决方案:
$(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>
{%trans“保存”%}
谢谢你的回答 我找到了解决方案:
$(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>
{%trans“保存”%}
谢谢你的回答 尝试删除
返回false代码>因为它也会停止事件传播preventDefault()
单独就足以停止表单提交银行进行评论。它不起作用。它可以防止表单提交和标签插件进入。按照McCrossan先生的建议,去掉return false
,然后将event.preventDefault()
放在if(event.keyCode==13){…
的正上方13
作为confirmKeys
选项的值,例如confirmKeys:[13,44]
请显示使用插件的代码。尝试删除返回false;
,因为它也会停止事件传播。preventDefault()
单独一项就足以阻止表单提交到银行进行评论。它不起作用。它阻止表单提交和标签插件进入,并按照McCrossan先生的建议清除return false
,然后将event.preventDefault()
放在if(event.keyCode==13)的正上方{…
您是否有13
作为confirmKeys
选项的值,例如confirmKeys:[13,44]
请显示使用插件的代码。