【问题标题】:PHP not posting textbox values produced by jQueryPHP不发布由jQuery生成的文本框值
【发布时间】:2014-05-30 10:14:54
【问题描述】:

我有什么:

  • 我有一个包含两个普通文本框和两个禁用文本框的表单。
  • 禁用的元素通过 jQuery 从启用的元素接收它们的值。
  • 然后通过 PHP 发布四个元素的值

注意:我的表单被用作自定义 WordPress 页面的一部分。

问题:

禁用的元素(即通过 jQuery 派生的值)不会通过 PHP 发布。

视觉:

我的代码:

PHP:

<?php
if(isset($_POST['submit'])) {
    echo 'a= '.$_POST["textbox_a"].'<br />';
    echo 'b= '.$_POST["textbox_b"].'<br />';
    echo 'c= '.$_POST["textbox_c"].'<br />';
    echo 'd= '.$_POST["textbox_d"].'<br />';
}
?>

jQuery:

<script type="text/javascript">

    jQuery(document).ready(function($) {
        // Code here will be executed on document ready. Use $ as normal.
        // alert("jQuery is working fine :-)");     

        $( "button" ).click(function( event ) {
            event.preventDefault();
            $('[name=textbox_c]').val($('[name=textbox_a]').val());
            $('[name=textbox_d]').val($('[name=textbox_b]').val());
        });             

    });

</script>

HTML:

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

    <input type="input" name="textbox_a" />
    <input type="input" name="textbox_b" />
    <button>[jQuery] Click me to transfer</button><br />

    <input type="input" name="textbox_c" disabled="disabled" />
    <input type="input" name="textbox_d" disabled="disabled" />
    <input type="submit" name="submit" value="[PHP] Click me to post" /><br />

</form>

我的问题:

为什么 PHP 不将我的 jQuery 派生值视为常规输入值?虽然我从未使用过 Ajax,但我认为 Ajax 是解决方案是否正确?我看到的关于 Ajax 的示例对于我想要实现的目标来说似乎有点矫枉过正,但如果这是唯一的前进方向,我很乐意深入研究它。

【问题讨论】:

  • 你为什么认为这是一个 jquery,甚至是一个 javascript 问题?即使删除所有 javascript,您也可以重新创建问题。
  • 改用type=hidden 元素。
  • @KevinB - 考虑到代码的基本/简短程度,我假设 HTML 和 PHP 几乎不是问题。此外,在这三种语言中,我对 jQuery 最不熟悉,因此假设我的失礼发生在 jQuery 上似乎是合乎逻辑的。别担心,我不是那种对 jQuery 有非理性反感的类型。如果我从问题中删除所有 jQuery 的痕迹,你愿意吗?
  • 不,我希望通过说明它会指出调试应该从哪个方向开始,以便下次您可以帮助自己找到答案。
  • @Blazemonger - 出于示例的目的,我希望能够从前端而不是源查看传输的值,但您的建议仍然是正确的。

标签: php jquery html ajax wordpress


【解决方案1】:

禁用的输入不会与表单一起提交;这是 disabled 的定义行为的一部分。

【讨论】:

  • 谢谢。在所有正确答案中,您是第一个回答的。
【解决方案2】:

禁用的元素(即通过 jQuery 派生的值)不会通过 PHP 发布。

禁用的元素不会被发送到服务器。您可以使用readonly 代替disabled,区别在于readonly 输入被发送到服务器。

【讨论】:

    【解决方案3】:

    我不相信 disabled 表单元素实际上会被发布(不管是由 jQuery 动态创建的)。我会改用readonly="readonly" 属性。

    【讨论】:

      【解决方案4】:

      使用readonly 而不是disabled

      From Mozilla:

      已禁用

      此布尔属性指示表单控件不可用于交互。特别是,click 事件不会在禁用的控件上调度。此外,禁用控件的值不会与表单一起提交。

      【讨论】:

      • 我按时间顺序选择了正确的答案,但我对你的上下文、参考和格式的答案投了赞成票。
      猜你喜欢
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多