PHP不发布jQuery生成的文本框值

时间:2014-04-15 20:47:31

标签: php jquery html ajax wordpress

我拥有的:

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

注意:我的表单正在用作acustom WordPress页面的一部分。

问题:

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

的视觉:

enter image description here

我的代码:

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上看到的例子对于我想要达到的目标来说似乎有些过分,但如果它是唯一的前进方向,我很乐意深入研究它。

4 个答案:

答案 0 :(得分:4)

使用readonly代替disabled

From Mozilla:

  

禁用

     

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

答案 1 :(得分:3)

禁止输入不会随表格一起提交;这是已禁用的已定义行为的一部分。

答案 2 :(得分:1)

  

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

禁用的元素不会被发送到服务器。您可以使用readonly代替disabled,差异为readonly输入发送到服务器。

答案 3 :(得分:1)

我不相信已禁用表单元素实际上已发布(无论是否由jQuery动态创建)。我会改用readonly="readonly"属性。