Javascript 在输入VueJS/Semantic UI时阻止表单提交
我们已经为这个问题寻找了两天的解决方案,但到目前为止,所有建议的解决方案都不起作用 我的表单html是用Javascript 在输入VueJS/Semantic UI时阻止表单提交,javascript,jquery,forms,vue.js,semantic-ui,Javascript,Jquery,Forms,Vue.js,Semantic Ui,我们已经为这个问题寻找了两天的解决方案,但到目前为止,所有建议的解决方案都不起作用 我的表单html是用 <form id="quote_form" action="" method="get" class="ui large form"> 我还尝试通过以下方式覆盖enter键并防止其触发submit功能: $('#quote_form').on('keyup keypress', function(e) { var keyCode = e.keyCode || e.which
<form id="quote_form" action="" method="get" class="ui large form">
我还尝试通过以下方式覆盖enter键并防止其触发submit功能:
$('#quote_form').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.stopPropagation();
e.preventDefault();
return false;
}
});
$(document).on("keypress", "form", function(event) {
return event.keyCode != 13;
});
$('#quote_form').bind('keypress keydown keyup', function(e){
if(e.keyCode == 13) { e.preventDefault(); }
});
表单有多个填写步骤。每一步都使用一个按钮来允许前进到下一步。按下enter键后,表单将重定向到表单的第一步/选项卡。它不重定向的唯一情况是当当前步骤的规则不满足时。表单提交由提交按钮处理,该按钮本身调用方法来验证和提交表单。我找不到输入提交行为和提交按钮之间的任何联系
如果我缺少任何有用的信息来帮助找出原因,请让我知道。我不习惯在这里提问,希望尽可能避免我的问题被认为是不好的:)只需在输入标记的末尾使用@keyup.enter.prevent即可。看 顺便说一句,您应该尝试使用本机VueJS事件,而不是使用JQuery重做所有事件
@submit.prevent
我找到的解决方案只考虑语义用户界面而不考虑VueJ,但应该适用于这里,并提供了对该问题的一些见解 问题产生于这样一个事实,即
$(“#formId”).form({…})
为按钮按下注册一个事件处理程序,并在选择其中一个输入框时按Enter键提交表单。当选择元素并选择事件侦听器类别时,可以在Chrome DevTools中看到这一点:
我发现消除这种行为的最简单方法是调用
$("#formId").unbind('keydown')
要从元素中完全删除向下键绑定。需要防止在输入时按键,而不是在窗体上按键。
$('#quote_form').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.stopPropagation();
e.preventDefault();
return false;
}
});
$(document).on("keypress", "form", function(event) {
return event.keyCode != 13;
});
$('#quote_form').bind('keypress keydown keyup', function(e){
if(e.keyCode == 13) { e.preventDefault(); }
});
$("#formId").unbind('keydown')