我有一个带有id / name league_id
输入的表单:
<form accept-charset="UTF-8" action="/user" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="bb92urX83ivxOZZJzWLJMcr5ZSuamowO9O9Sxh5gqKo=">
</div>
<input id="league_id" name="league_id" type="text" value="11">
<select class="sport_selector" id="sport_type_id" name="sport_type_id">
<option value="5" selected="selected">Football</option>
<option value="25">Women's Soccer</option>
<option value="30">Volleyball</option>
<option value="10">Men's Soccer</option>
</select>
<input name="commit" type="submit" value="Save changes">
</form>
在我的网页的另一部分,我有一个下拉菜单,当更改时,会清除league_id
的值:
$("#sport_type_id").change(function(){
$("#league_id").val(null)
$(this).parents('form:first').submit()
});
如果我调试此页面,我可以看到从文本框中擦除的值,但是在提交表单时,我的控制器总是获得旧值。
更新
我的错。我有多个标记为league_id
的字段。不确定到底发生了什么,但是当我输入错误信息时,我开始得到非常奇怪的结果,一旦我确保所有ID都是唯一的,我就开始得到预期的结果。
抱歉面掌
我尝试更改输入的名称并获得相同的结果。
答案 0 :(得分:0)
认为这是罪魁祸首
$("#league_id").val(null)..
如果在 null 之后检查DOM,则值字段仍然存在,可能是DOM尚未刷新..
因此,当发布表单时,可能会发送值=“11”。
为什么不尝试完全删除该属性,然后再试一次..
$('#league_id').removeAttr('value');
答案 1 :(得分:0)
我自己的错,在元素中发生了名称冲突