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)..

nullにした後に DOM を調べると、値フィールドがまだ存在します。DOM がまだ更新されていない可能性があります。

そのため、フォームが投稿されると、おそらく value="11" が送信されます。

属性を完全に削除してから、もう一度やり直してください。

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

私自身のせいで、要素に名前の衝突がありました

于 2012-10-11T19:34:05.757 に答える