为什么JavaScript onClick没有触发jQuery提交功能?

时间:2016-01-26 13:54:56

标签: javascript jquery html

我正在提交这样的表格:

<input id="submitBtn" style="margin-top:20px;" type="button" onclick="document.getElementById('form94').submit();" value="Opdater">

由于某种原因,我的jQuery .submit()功能无法触发。

$("#form94").submit(function() {
    var form = $(this);
        $.ajax({ 
             url   : form.attr('action'),
             type  : form.attr('method'),
             data  : form.serialize(), // data to be submitted
             success: function(response){
                $("#showFancyBoxThankYouLink").click();
             }
        });
    return false;
});

5 个答案:

答案 0 :(得分:0)

从中创建一个函数并使用onclick触发它:

<input id="submitBtn" style="margin-top:20px;" type="button" onclick="myfunction()" value="Opdater">

function myfunction() {
var form = $(this);
        $.ajax({ 
             url   : form.attr('action'),
             type  : form.attr('method'),
             data  : form.serialize(), // data to be submitted
             success: function(response){
                $("#showFancyBoxThankYouLink").click();
             }
        });
    return false;
}

答案 1 :(得分:0)

表单渲染后javascript是否正在运行?如果没有,请确保您的javascript位于表单之后,或者尝试在文档加载后运行它。

$(document).ready(function() {
  $("#form94").submit(function() {
    var form = $(this);
        $.ajax({ 
             url   : form.attr('action'),
             type  : form.attr('method'),
             data  : form.serialize(), // data to be submitted
             success: function(response){
                $("#showFancyBoxThankYouLink").click();
             }
        });
    return false;
  });
});

提交表单的另一种方法是将onsubmit属性添加到表单并让它返回一个函数。您还可以更改按钮类型以提交和删除onclick属性。

<form id="form94" name="form94" onsubmit="return SubmitMyForm();">
  <input type="submit" value="Opdater">
</form>

<script>
function SubmitMyForm() {
    var form = $(this);
    $.ajax({ 
         url   : form.attr('action'),
         type  : form.attr('method'),
         data  : form.serialize(), // data to be submitted
         success: function(response){
            $("#showFancyBoxThankYouLink").click();
         }
    });
    return false;
}
</script>

答案 2 :(得分:0)

没有代码示例,很难说清楚。但是,有些浏览器只在用户点击提交按钮时提交表单,您无法通过脚本提交。

此主题还有大量其他SO帖子,它们都可以归结为附加提交事件时不存在的表单(您的脚本是在文档顶部执行还是在文档的就绪事件中执行? )。

表格尚不存在: Why Jquery form submit event not firing? Jquery .Submit() is not triggering submit event

通过脚本提交: Should jQuery's $(form).submit(); not trigger onSubmit within the form tag?

不使用提交按钮: jQuery submit not firing

答案 3 :(得分:0)

替换此

onclick="document.getElementById('form94').submit();"

onclick="$( "#form94" ).submit();"

javascript submit()不会在IE中冒泡,而且可能是其他陷阱。

答案 4 :(得分:0)

因为你使用不同的选择器

document.getElementById('form94'); //returns a HTML DOM Object
$('#form94');  //returns a jQuery Object  

您可以尝试下一个代码,它可以正常使用

<form id="form94">
    <input id="submitBtn" style="margin-top:20px;" type="button" onclick="$('#form94').submit();" value="Opdater">
</form>

<script type="text/javascript">
$("#form94").submit(function(e) {
    e.preventDefault();
   alert('test');
});