PHP不发布由jQuery生成的文本框值
Posted
技术标签:
【中文标题】PHP不发布由jQuery生成的文本框值【英文标题】:PHP not posting textbox values produced by 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 - 出于示例的目的,我希望能够从前端而不是源查看传输的值,但您的建议仍然是正确的。
【参考方案1】:
禁用的输入不会与表单一起提交;这是 disabled 的定义行为的一部分。
【讨论】:
谢谢。在所有正确答案中,您是第一个回答的。【参考方案2】:禁用的元素(即通过 jQuery 派生的值)不会通过 PHP 发布。
禁用的元素不会被发送到服务器。您可以使用readonly
代替disabled
,区别在于readonly
输入被发送到服务器。
【讨论】:
【参考方案3】:我不相信 disabled 表单元素实际上会被发布(不管是由 jQuery 动态创建的)。我会改用readonly="readonly"
属性。
【讨论】:
【参考方案4】:使用readonly
而不是disabled
From Mozilla:
已禁用
此布尔属性指示表单控件不可用于交互。特别是,click 事件不会在禁用的控件上调度。此外,禁用控件的值不会与表单一起提交。
【讨论】:
我按时间顺序选择了正确的答案,但我对你的上下文、参考和格式的答案投了赞成票。以上是关于PHP不发布由jQuery生成的文本框值的主要内容,如果未能解决你的问题,请参考以下文章