我遇到的问题的简化版本:
这是我的HTML表单:
<form enctype="multipart/form-data" method="post" action="/controller/action">
<input type="text" name="title" id="title" value="" class="input-text" />
<input type="hidden" name="hidden_field" value="" id="hidden_field" />
<input type="submit" name="submit_form" id="submit_form" value="Save" class="input-submit" />
</form>
这是JavaScript:
$(document).ready(function() {
$('#submit_form').hover(function() {
$('#hidden_field').attr('value') = 'abcd';
});
});
这是PHP后端的一个非常简短的版本:
if (isset($_POST)) {
var_dump($_POST);
}
我所做的是将#submit_form按钮悬停几秒钟以确保jQuery代码已执行,然后我提交表单并:
为什么?当我在悬停事件中使用jQuery将其插入隐藏字段时,它应该包含'abcd'。
答案 0 :(得分:4)
答案 1 :(得分:3)
声明
$('#hidden_field').attr('value') = 'abcd';
不正确。当你将rvalue(jQuery对象)分配给另一个rvalue(一个字符串)时,你应该得到一个错误。 (赋值运算符左侧需要左值(例如变量)。)
你可能想要:
$('#hidden_field').val('abcd');
或:
$('#hidden_field').attr('value', 'abcd');
(前者更像是jQuery-ish,但对于这种情况,两者都是等价的。)
答案 2 :(得分:1)
它是:
$('#hidden_field').attr('value','abcd');
答案 3 :(得分:0)
由于这些是隐藏元素,请务必使用查看页面源的其他内容检查这些内容,例如按F12,使用alert()
等检查。原始html页面的来源不会反映通过其进行的更改Java脚本。