Javascript 取消jQuery中的$(';表单';).submit()调用
我在jQuery中使用表单提交事件时遇到了麻烦 加价 然后,当我单击该Javascript 取消jQuery中的$(';表单';).submit()调用,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我在jQuery中使用表单提交事件时遇到了麻烦 加价 然后,当我单击该时,它确实会触发该事件,并且可以取消提交事件 但是当我在.btn_submit标签上触发表单提交时,return false不能取消提交 取消失败 所以,现在的问题是,如果我必须使用a.btn_submit来触发表单的提交,我想在这种情况下取消该提交 我该如何触发 我该怎么取消 请帮忙 我做了一把小提琴 但它似乎无法在JSFIDLE中提交 我的最终解决方案(有点脏) 我可以在表单中创建一个提交输入,然后点击它。然后取下
时,它确实会触发该事件,并且可以取消提交事件
但是当我在
.btn_submit
标签上触发表单提交时,return false不能取消提交
取消失败
所以,现在的问题是,如果我必须使用
a.btn_submit
来触发表单的提交,我想在这种情况下取消该提交
我做了一把小提琴 但它似乎无法在JSFIDLE中提交
我的最终解决方案(有点脏) 我可以在表单中创建一个提交输入,然后点击它。然后取下它 如果我以这种方式触发提交,我的行为与我预期的完全相同:
$('form').submit(function(){})中的验证代码代码>无需更改。
的内容,那么它就可以做得很好
希望有一个干净的更好的解决方案。我现在明白你们想要实现什么,所以请忽略我以前写的内容
$("a.btn_submit").click(function(){
if($('form').valid())
{
$('form').submit();
}
});
formElement.submit()
及其jQuery等价物故意不触发onsumbit事件。否则,可能会出现无限递归
因此,您不能执行$('form')。submit()
并希望有一个onsubmit处理程序进行拦截
你最好的选择可能是你的“肮脏”想法。也就是说,点击一个(隐藏的)
type=“submit”
按钮。我现在明白你想要实现什么,所以请忽略我之前写的内容
formElement.submit()
及其jQuery等价物故意不触发onsumbit事件。否则,可能会出现无限递归
因此,您不能执行$('form')。submit()
并希望有一个onsubmit处理程序进行拦截
你最好的选择可能是你的“肮脏”想法。即触发对(隐藏的)
type=“submit”
按钮的单击。使用链接提交表单似乎很奇怪,但您的问题是您没有取消锚上的单击操作
$('.btn_submit').on("click", function(evt) {
evt.preventDefault();
$('form').submit();
});
使用链接提交表单似乎很奇怪,但您的问题是您没有取消锚上的单击操作
$('.btn_submit').on("click", function(evt) {
evt.preventDefault();
$('form').submit();
});
以这种方式调用submit,最接近我的意图:
$.fn.natural_submit = function() {
if($(this).is('form')) {
var $form = $(this);
var $input_submit = $('<input type="submit" />').hide().appendTo($form);
$input_submit.trigger('click');
$input_submit.remove();
}
}
$('#btn_submit').click(function() {
$('form').natural_submit();
});
$.fn.natural\u submit=function(){
if($(this).is('form')){
var$form=$(此);
var$input_submit=$('').hide().appendTo($form);
$input_submit.trigger('click');
$input_submit.remove();
}
}
$('btn_submit')。单击(函数(){
$('form').natural_submit();
});
以这种方式调用submit,最接近我的意图:
$.fn.natural_submit = function() {
if($(this).is('form')) {
var $form = $(this);
var $input_submit = $('<input type="submit" />').hide().appendTo($form);
$input_submit.trigger('click');
$input_submit.remove();
}
}
$('#btn_submit').click(function() {
$('form').natural_submit();
});
$.fn.natural\u submit=function(){
if($(this).is('form')){
var$form=$(此);
var$input_submit=$('').hide().appendTo($form);
$input_submit.trigger('click');
$input_submit.remove();
}
}
$('btn_submit')。单击(函数(){
$('form').natural_submit();
});
我想做的是在$('form').submit(function(){})处理程序中进行验证。你的答案不是这样的。你如何检查是否(!valid())
?这只是一个说明问题的示例,假设这里的为false
。如果表单有效,那么你可以使用$('form')提交表单。提交()代码>其他方面,它不提交表单。但我不知道在我调用触发器的任何地方如何使表单有效,我希望验证只写一次!我知道你的代码可以工作,但不是我想要的。谢谢。我要做的是在$('form').submit(function(){})
处理程序中进行验证。你的答案不是这样的。你如何检查是否(!valid())
?这只是一个说明问题的示例,假设这里的为false
。如果表单有效,那么你可以使用$('form')提交表单。提交()代码>其他方面,它不提交表单。但我不知道在我调用触发器的任何地方如何使表单有效,我希望验证只写一次!我知道你的代码可以工作,但不是我想要的。谢谢。为什么链接上有href?你不需要它,而且它看起来不正确。@MarkKadlec与问题无关,我已经删除了它。谢谢@你的确切意思是什么?你是说这是不可能的,我不应该那样做?或者别的什么?你为什么要用JS来处理点击一个
?你的真实代码不仅仅是触发表单提交吗?@nnnnnn仅仅因为如果我单击提交输入,我可以被取消,但是如果我通过脚本触发,它就不能取消。为什么链接上有href?你不需要它,而且它看起来不正确。@MarkKadlec与问题无关,我已经删除了它。谢谢@你的确切意思是什么?你是说这是不可能的,我不应该那样做?或者别的什么?你为什么要用JS来处理点击一个
?你真正的代码不仅仅是触发表单提交吗?@nnnnnn因为如果我点击提交输入,我可以被取消,但是如果我通过脚本触发,它就不能取消。你做错了。我绝对相信,我的方式将正确地防止表单提交。您的valid()
已损坏。当返回false时,为什么这会起作用代码>没有?在基于jQuery的事件处理程序中,返回false
最终在幕后执行event.preventDefault()
和event.stopPropagation()
。您做错了。我绝对相信,我的方式将正确地防止表单提交。您的valid()
已损坏。当返回false时,为什么这会起作用代码>没有?在基于jQuery的事件处理程序中,返回false
最终执行event.preventDefault()
$('.btn_submit').on("click", function(evt) {
evt.preventDefault();
$('form').submit();
});
$.fn.natural_submit = function() {
if($(this).is('form')) {
var $form = $(this);
var $input_submit = $('<input type="submit" />').hide().appendTo($form);
$input_submit.trigger('click');
$input_submit.remove();
}
}
$('#btn_submit').click(function() {
$('form').natural_submit();
});