即使将输入字段重命名为“提交”之外的其他内容,Jquery表单提交也不起作用

时间:2017-01-19 14:44:11

标签: jquery

表格:

<form action="" method="post" id="save-chart-form">
// Some fields, none named "submit"
<input id="saveChartButton" name="commit" class="default-button-jsd disablebutton" type="submit" value="Save">
</form>

Jquery的:

$( function() {
    $( "#save-chart-form" ).submit( function( event ) {
        event.preventDefault()
        $( "#saveChartButton" ).val( "Please be patient, it might take a while to prepare your chart" );
        $( "#save-chart-form" ).submit() // THIS won't work
    } );
} );

$(“#save-chart-form”)。isubmit()应该提交表单,但它什么都不做。您可以注意到我已经将表单提交按钮重命名为“提交”以外的其他内容,这是此问题的传统修复方法。 使用jquery 3.1.1。

罪魁祸首是什么?

编辑:将jquery调用更改为

$("#save-chart-form").click(function (event) {.... 

无法解决问题

2 个答案:

答案 0 :(得分:1)

如果打开控制台(firefox,请按f12),可能会出现错误:递归过多。如果您在表单上放置回调,则会阻止在某些内容不正确时提交。所以回调应该返回一个布尔值:

$( function() {
    $( "#save-chart-form" ).submit( function( event ) {
        $( "#saveChartButton" ).val( "Please be patient, it might take a while to prepare your chart" );

    if(valid){
        return true; // this will submit
    } else {
        return false; // this will prevent the submit
    }
    } );
} );

所以删除event.preventDefault()。这将禁用任何提交可能性并将其替换为返回

答案 1 :(得分:0)

我会将输入的类型从submit更改为button并添加一个onclick事件属性,该属性将填充按钮的值并提交表单。

考虑到您的代码,标签只会显示为0.001秒,如果我是正确的,提交将立即进行。