HTML表单按钮值未在Safari和Chrome中发布

时间:2012-07-08 05:13:12

标签: php jquery html forms post

我在点击按钮时使用jQuery提交表单。然后,我想测试按钮的值,但是,这不会在Safari和Chrome中提交。为什么?有工作吗?

在IE / FF中测试以下代码以查看它是否有效,然后在Safari / Chrome中测试它以查看它没有:

ButtonPostTest.php:

<?php
    if(isset($_POST['testBtn'])) {
        echo $_POST['testBtn'];
    }
?>
<html>
    <head>
    <title></title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#btn').click(function() {
                    $('form').submit();  // submit the form
                });
            });
        </script>
    </head>
    <body>
        <form action="" method="post">          
            <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
        </form>
    </body>
</html>

更新

同样的事情发生在input

<input id="btn" class="page-btn" type="submit" name="testBtn" value="Post this"></input>

此外,这只是在使用jQuery .submit()提交时的一个问题 - 如果没有这个,它可以使用按钮或输入提交。

10 个答案:

答案 0 :(得分:6)

给它起个名字。

<button type='submit' id='trash' name='trash' value="trash" class='red'>

答案 1 :(得分:2)

正如罗伯特在使用<button>标记时所述,您需要name=""value="",例如

<button name="Search" value="Simple" type="submit">Search</button>

VS

<button name="Search" value="Advanced" type="submit">Search</button>

在此示例中,您的POST数据将具有 对:

搜索简单

搜索高级

然后根据该POST值,您可以编写代码以采取适当的操作。 :)

<强>即。你不需要使用输入,只需使用名称/值的按钮就可以了。

答案 2 :(得分:1)

我认为你发现了一个webkit错误。

我在Chrome中测试了相同的内容:

<form action="" method="post">          
   <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>

这不会发送任何数据。如果'但是我添加了另一个元素,特别是输入:

<form action="" method="post">          
   <input type="hidden" name="shim" value="" />
   <button id="testBtn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>

这会发送两个值。这没有JavaScript。一旦你添加了垫片隐藏的表单元素,它看起来就有意义了。

此解决方案需要更多测试,但它可能会满足您的需求。

答案 3 :(得分:1)

这可能是非常明显的,现在我自己修理它,我意识到这是一个愚蠢的错误。但对我来说,我错误地离开了type="submit"。表单始终有效,但只是从这些按钮中发布了一个值。

没有传递任何值(错误):

<button name="step" id="btn1" value="my_value">btn_text</button>

价值传递(好):

<button type="submit" name="step" id="btn1" value="my_value">btn_text</button>

无论如何,我希望这可以帮助那些刚刚起步的新人,或者那些看似显而易见的东西。

干杯!

答案 4 :(得分:0)

<button><input>是两个不同的标记。如果您想提交按钮值,请使用<input>标记。

答案 5 :(得分:0)

同意Vins,我可能会使用<input>

您使用<button>代替<input>是否有特殊原因?我通常更喜欢<button>(允许我添加图标和图片),但我相信浏览器之间在如何解释价值方面存在差异......

根据 w3schools Mozilla Developer Network,某些浏览器会提交value属性,而其他浏览器(例如IE7)会错误地在标记之间提交文本。

答案 6 :(得分:0)

尝试通过捕获隐藏的输入来发送按钮作为提交。

PHP:

<?php
    if(isset($_POST['btname']))
        echo $_POST['btname'];
    }
 ?>

和html:

<form method="POST" action="" id="formname" name="formname">
<input name="btname" id="btname" type="hidden" />
<button onclick="document.formname.submit()" value="Submit">Send</button>
</form>

答案 7 :(得分:0)

你发布了多少个值?

我不确定听起来你的问题已经解决了。有一点没有提到的是你可能超出你的php max_input_vars限制。

当你超出这个限制时,Php会保持沉默,所以你必须检查警告日志,或者这样检查:

1。 计算POST数组值。在var_dump($_POST);中编写脚本(在安全的生产沙箱环境中)将做到最好,因为您可以查看最终值输出以查看POST阵列&#34;切断&#34;。

2。 接下来,运行脚本以使用函数phpinfo()输出php信息。检查&#34; max_input_vars&#34;。

的值

3。 如果POST数组计数==&#34; max_input_vars&#34;价值,然后你超过了限制。

在您的情况下,可能会在稍后的POST中包含提交输入。

要在php.ini中编辑值(在此示例中为5000),请添加或编辑以下行:max_input_vars = 5000

答案 8 :(得分:0)

所以,我发生了非常相似的事情。一切正常,除了Chrome [版本78.0.3904.108(正式版本)(64位)]。

当我取出自己的id =时,它起作用了!但这不是问题。原来是我在标记中的onclick =处禁用了[Submit]按钮(使用按钮id =)。执行此操作时,Chrome似乎什么也没发布。哪个没有意义?奇怪吗而且我不知道为什么吗?

因此,我花了大量时间在附近闲逛,发现您可以在中的onsubmit =禁用[Submit]按钮。实际上,onsubmit =与onclick =几乎相同,因此在将来,我认为我需要更改一些东西,以便始终使用onsubmit =,然后所有大型浏览器都将继续为我工作。

答案 9 :(得分:0)

在提交/点击事件期间禁用的按钮不提交其值

根据艾伦·斯图尔特(Alan Stewart)的说法,当我写了一个小实用程序来防止双击“提交”并禁用该按钮的表单提交按钮时,就引入了这个问题。

我更改了代码,以便确定是否已提交表单,如果已提交,请禁用该按钮并阻止通过event.preventDefault()提交表单。

它不像以前那样好,因为它立即禁用了提供即时视觉反馈的按钮(因为Bootstrap具有禁用按钮的样式)。