【问题标题】:onclick disable submit buttononclick 禁用提交按钮
【发布时间】:2011-03-12 07:41:15
【问题描述】:

我想在点击时禁用提交按钮。我可以禁用按钮,但我无法将帖子值提交给 php。

【问题讨论】:

  • 您可能想展示如何禁用它。您提供的信息很少,无法为您提供帮助。
  • 看看我之前发布的问题,我似乎在这里找不到好的可靠答案。我所看到的只是人们争论 ajax 与 iframe。所以告诉我那里有反馈。
  • 嗨丹尼尔,我将在下面显示我的代码。随时发表评论。 tks

标签: php javascript


【解决方案1】:
<input type="submit" onclick="this.disabled = true" value="Save"/>

或参考this

【讨论】:

  • 嗨,这可行,但如果我想提交到 php,则 POST 值丢失。但是,我找到了一个替代解决方案,我将在下面发布。随时发表评论。
【解决方案2】:

我在网上找到了替代方案。我所做的是创建一个假的禁用和隐藏按钮。当实际的按钮被点击时,我会隐藏它并显示假的禁用按钮。

实际按钮:

$onclick = "
var boolconfirm = confirm('$strconfirmattempt');
if(boolconfirm==true){
finishattempt.style.display='none';
finishattempt2.style.display='inline';
}
return boolconfirm;";

假按钮:

echo "<input type=\"submit\" name=\"finishattempt\" value=\"submit\" onclick=\"$onclick\" />.
<input type=\"submit\" id=\"finishattempt2\" name=\"finishattempt2\" value=\"submit\" style=\"display:none;\" DISABLED/>\n";

【讨论】:

  • 更好地格式化您的代码。它不应该像那样难以理解。格式化后,突出显示代码并点击Ctrl+K,这会将所有内容缩进4个空格,使其显示为预先格式化的源代码。
  • +1 用于寻找可行的解决方案并格式化您的代码。尽管将来您可能希望将代码分成更多行,以便不会出现水平滚动条。但实际上它已经比以前好 100 倍了。
【解决方案3】:

如果你禁用一个输入,那么它的值自然不会包含在表单数据中。您需要在提交后禁用按钮。如果您将回调绑定到onclick,那么它会在表单提交之前运行

你需要的是这样的:

jQuery:

$(document).ready(function() {
    $(document).unload(function() {
        $('#submit-btn').attr('disabled', 'disabled');
    });
});

普通 JS:

document.onunload = disableSubmit;
function disableSubmit() {
    /* disable the submit button here */
}

基本上,这不是绑定到提交按钮的onclick 事件,而是将禁用代码绑定到文档的卸载事件 (document.onunload),一旦提交表单并且您开始离开页面,就会触发该事件。

【讨论】:

  • 添加一些关于你的代码是 jQuery 而不是普通的旧 JS 的内容
  • 啊,是的,我曾在一次编辑中提到过第一个 sn-p 是 jQuery,但我想我不小心删除了它。
【解决方案4】:

您可以使用一个隐藏字段来保存按钮的值并将该值从您的 POST 数据中提取出来:

<input type="hidden" id="hiddenField" value="default" />

<input type="button" id="myButton" onclick="buttonClick();">

function buttonClick()
{
    document.myForm.myButton.disabled = true;
    document.myForm.hiddenField.value = "myButtonClicked";
}

我的 PHP 有点生疏了,但是你可以像这样访问隐藏字段:

if ($POST['hiddenField'] == "myButtonClicked")
{
    // Click handling code here
}

【讨论】:

    【解决方案5】:

    为什么不创建一个隐藏的禁用提交按钮和一个活动提交按钮,并且onClick显示禁用并隐藏活动?我可以在 jQuery 中做到这一点,但没有它我有点没用。伤心吧?

    【讨论】:

      【解决方案6】:

      使用 jQuery,添加返回 false 的 onClick 处理程序:

      <input type="submit" value="Submit" onClick="$(this).click(function() {return false;});"/>
      

      【讨论】:

        【解决方案7】:

        我用简单的 jQuery 解决了这个问题。代码会在单击时删除按钮,然后附加假按钮或类似“正在加载..”的文本,最后发送表单。

        HTML:

        <div class="holder"><input type='submit' value='ACCEPT' class='button'></div>
        

        jQuery:

        $('.button').click(function() {
                $('.button').remove();
                $('.holder').append("//fake input button or whatever you want.");
                $('.form').submit();
            });
        

        与其他方法不同,例如在您单击并发送表单的瞬间卸载按钮更改。我认为使用繁重的表格是一种更好的做法。

        【讨论】:

          【解决方案8】:

          这是一个使用 onsubmit 代替 onlick 的方法:

          这在顶部:

          <script type='text/javascript'>
          function disableButtons()
          {
            $('input[type="submit"]').attr('disabled', true);
          }
          </script>
          

          然后是您的 PHP(请注意,isset post 不适用于提交按钮,因为我们要禁用提交按钮)。

          if (isset($_POST['dothis'])) 
          {
          //CODE TO EXECUTE
          }
          

          然后是 HTML。

          <form method='post' action='' onsubmit='disableButtons()'>
          <input type='hidden' name='dothis' value=''>
          <input type='submit' value='Submit'></form>
          

          Onsubmit 进入。 确保您的 isset(PHP 部分)用于与您的提交相关的输入,但不是提交按钮本身。您可以看到它是使用 PHP 检查的隐藏值,而不是提交按钮,而提交按钮是被禁用的。 通过这样做,您可以在不禁用 PHP 的情况下禁用提交按钮。

          【讨论】:

            猜你喜欢
            • 2017-10-13
            • 2015-08-19
            • 1970-01-01
            • 2016-11-01
            • 2023-03-16
            • 1970-01-01
            • 2010-12-30
            • 2013-06-11
            • 2016-04-03
            相关资源
            最近更新 更多