【问题标题】:jQuery submit() is not firingjQuery submit() 没有触发
【发布时间】:2014-07-16 21:15:07
【问题描述】:

我正在尝试从表单外部的链接(不是提交按钮)触发表单提交。

以下是表单的基础知识:

<form action="/Hospice/TabPatientTrackingPost" id="formTabPatientTrackingPost" method="post">

    [a big form with lots of inputs]

    <div class="pull-right">
        <button type="submit" class="btn btn-brand" id="btnSave" name="btnSave">Save</button>
        <button type="reset" class="btn btn-brand" id="btnCancel">Cancel</button>
    </div>
</form>

链接如下:

<a href="/Hospice/TabLiving/1" onclick="triggerSave();">Living</a></li>

JS函数:

 function triggerSave() {
    alert("triggerSave test alert");
    $("#formTabPatientTrackingPost").submit(); 
}

但是,代码 $("#formTabPatientTrackingPost").submit(); 不会导致表单发布提交。

alert("triggerSave test alert"); 正在触发,但表单未提交。

如果我只单击保存按钮,它就可以正常工作。

任何想法我做错了什么?

【问题讨论】:

  • 控制台中是否出现任何错误?
  • 控制台中没有错误,并且在链接的onclick 中调用了 triggerSave()。
  • triggerSave()window 上可用吗?
  • 表单中是否有指定提交事件的代码? $('#form').submit(function(){...});
  • 我看到下面每个人的 jsfiddle 都能正常工作,但我的有问题阻止 .submit() 和 .trigger('click') 工作。我会继续努力,看看我能弄清楚什么。谢谢。

标签: javascript jquery asp.net-mvc forms google-chrome


【解决方案1】:

根据您发布的内容,这对我来说很好。

http://jsfiddle.net/jFYN2/

triggerSave();

我会检查以确保您包含正确版本的 jQuery。

还要验证您在 [a big form with many inputs] 中没有任何语法问题

【讨论】:

  • 还要检查文档加载时脚本是否正在执行! $(document).ready(function(){/*...*/})
【解决方案2】:

试试这个:http://jsfiddle.net/8rLGN/2/

$('a').click(function(e) {
    e.preventDefault();
    alert("triggerSave test alert");
    $("#btnSave").trigger('click'); 
});

【讨论】:

    【解决方案3】:

    onclick属性调用函数时,需要确保你的函数全局可用,试试:

    triggerSave = function() {
        alert("triggerSave test alert");
        $("#formTabPatientTrackingPost").submit();
    }
    

    DEMO

    【讨论】:

    • alert 被调用,所以看起来这部分正在工作。
    • @L_7337 检查表单提交的演示。
    【解决方案4】:

    随着我在这方面的更多努力,我意识到问题只发生在 Chrome 中。一切都在 Firefox 和 IE 中运行(是的,谁会猜到)。

    然后,这导致我发了这篇文章:JQuery submit not working in Chrome

    所以,我的最终解决方案是使用 AJAX POST 来完成这项工作:

        triggerSave = function () {
        $.ajax({
            url: '/Hospice/TabPatientTrackingPost',
            type: 'POST',
            dataType: 'json',
            data: $('form#formTabPatientTrackingPost').serialize(),
            success: function (data) {
                console.log("success");
            }
        });
    }
    

    感谢所有帮助过的人!为所有有用的答案 +1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2013-09-10
      相关资源
      最近更新 更多