0

我有一个带有 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 都是唯一的,我就开始得到预期的结果。

对不起脸

我尝试更改输入的名称并得到相同的结果。

4

2 回答 2

0

认为这是罪魁祸首

$("#league_id").val(null)..

如果您在将 DOM设为null后检查 DOM,则 value 字段仍然存在,可能是 DOM 尚未刷新。

因此,当表单发布时,可能正在发送 value="11"。

您为什么不尝试完全删除该属性,然后再试一次..

 $('#league_id').removeAttr('value');
于 2012-09-28T21:57:30.493 回答
0

我自己的错,元素名称冲突

于 2012-10-11T19:34:05.757 回答