【问题标题】:Automatically submit form not working using jQuery使用 jQuery 自动提交表单不起作用
【发布时间】:2012-05-26 12:48:30
【问题描述】:

我有一个表单:<form id="form" action="updatescore.php" method="post"> 和一个 php 文件:updatescore.php,其中包含使用表单中的输入值更新数据库的代码。这一切都在使用提交按钮时起作用。

现在我想删除提交按钮并在 javascript 语句为真时提交表单。

js代码部分为:

if (document.getElementById('uhs').innerHTML > 0) { //this is true because the div gone is hidden
                    $('#gone').hide();
                    $.ajax({
                        type: "POST",
                        data: $("#form").serialize(),
                        cache: false,
                        url: "updatescore.php",
                        success: function () { //if submit to db is done
                            getUsers(1); //a function to reload a page overview
                        }
                    });
                }

但如果语句为真并且数据库未更新,则不会发生任何事情。关于这个有什么想法吗?

亲切的问候,

【问题讨论】:

  • 运行此代码时发生了什么操作?单击按钮,或计时器或类似的东西?
  • 此外,如果子项被隐藏,它不会将其从父项的 innerHTML 中排除。您必须移除孩子才能实现这一目标。
  • 所以 id 为“gone”的 div 被隐藏了?如果是这种情况,那么您应该检查 ajax 调用。使用 Firebug 或其他浏览器控制台检查 ajax 调用。查看它是否被调用以及是否被调用然后检查即将到来的响应。
  • 啊,在代码的另一部分中发现了一个可能会影响此代码的错误。需要先解决这个问题,然后再解决这个问题。

标签: php jquery ajax forms form-submit


【解决方案1】:

你确定条件为真吗?

if (document.getElementById('uhs').innerHTML > 0) { //this is true because the div gone is hidden
   alert('its true');

这也是不对的:

if (document.getElementById('uhs').innerHTML > 0)   

也许:

if (document.getElementById('uhs').innerHTML.length > 0)

或:

if ($('#gone')[0].style.display=="none") {

【讨论】:

    【解决方案2】:

    提交按钮是触发运行代码的事件:

     $('#gone').hide();
                    $.ajax({
                        type: "POST",
                        data: $("#form").serialize(),
                        cache: false,
                        url: "updatescore.php",
                        success: function () { //if submit to db is done
                            getUsers(1); //a function to reload a page overview
                        }
                    });
    

    document.getElementById('uhs').innerHTML > 0 不是事件,因此无法运行您的代码。

    试试这个.....

       document.addEventListener('keyup', function (e) {
               //
              if (document.getElementById('uhs').innerHTML > 0) { 
                    $('#gone').hide();
                    $.ajax({
                        type: "POST",
                        data: $("#form").serialize(),
                        cache: false,
                        url: "updatescore.php",
                        success: function () { //if submit to db is done
                            getUsers(1); //a function to reload a page overview
                        }
                    });
                }
        });
    

    【讨论】:

      【解决方案3】:

      感谢您的回复。该代码有效,但似乎代码的另一部分中的错误与 AJAX 调用有关。所以最终代码没有任何问题。

      再次感谢您的回复和建议!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 2018-10-25
        • 2015-07-29
        相关资源
        最近更新 更多