Javascript 取消jQuery中的$(';表单';).submit()调用

Javascript 取消jQuery中的$(';表单';).submit()调用,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我在jQuery中使用表单提交事件时遇到了麻烦 加价 然后,当我单击该时,它确实会触发该事件,并且可以取消提交事件 但是当我在.btn_submit标签上触发表单提交时,return false不能取消提交 取消失败 所以,现在的问题是,如果我必须使用a.btn_submit来触发表单的提交,我想在这种情况下取消该提交 我该如何触发 我该怎么取消 请帮忙 我做了一把小提琴 但它似乎无法在JSFIDLE中提交 我的最终解决方案(有点脏) 我可以在表单中创建一个提交输入,然后点击它。然后取下

我在jQuery中使用表单提交事件时遇到了麻烦

加价 然后,当我单击该
时,它确实会触发该事件,并且可以取消提交事件


但是当我在
.btn_submit
标签上触发表单提交时,return false不能取消提交

取消失败
所以,现在的问题是,如果我必须使用
a.btn_submit
来触发表单的提交,我想在这种情况下取消该提交

  • 我该如何触发
  • 我该怎么取消
  • 请帮忙


    我做了一把小提琴

    但它似乎无法在JSFIDLE中提交


    我的最终解决方案(有点脏) 我可以在表单中创建一个提交输入,然后点击它。然后取下它

    如果我以这种方式触发提交,我的行为与我预期的完全相同:

  • $('form').submit(function(){})中的验证代码无需更改。
  • 如果表单有类似于
    的内容,那么它就可以做得很好
  • 我能在那个锚上很好地表现出来。不是f**king
  • 谢谢你们所有人对你们病人的问候


    希望有一个干净的更好的解决方案。

    我现在明白你们想要实现什么,所以请忽略我以前写的内容

    $("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();
    });