0

私はこのラジオボタングループをフォームに持っています:

<%= form_for(@question) do |f| %>

    ....

    <div class="field">
        <%= f.radio_button :status, "open", { :checked => true } %>
        <%= f.label :status, "Open" %>
        <%= f.radio_button :status, "closed" %>
        <%= f.label :status, "Closed" %>
    </div><br />

    ....

<% end %>

Javascript コード エラーはありませんが、フォーム送信ボタンは、グループからラジオ ボタンの 1 つを削除するか、ブラウザーで Javascript を無効にするか、プロジェクト ディレクトリ内のすべての Javascript ファイルを削除した場合にのみ機能します。以下は、ラジオ ボタンに条件付きの変更を加える唯一の JQuery コードです。

....

$('#hide_question_form').click( function(e) {
  $('.new_question_form').slideUp(500);
  $('#question_title').val(null);
  $('#question_description').val(null);
  $('input:radio[name="question[status]"]')[0].checked = true;
  $('input:radio[name="question[status]"]')[1].checked = false;
});

....

問題がどこにあるかを確認するために、すべてのJavascriptファイルを1つずつコメント/削除しようとしましたが、すべて削除しないとボタンが機能しません。具体的な提案はありますか?ありがとう!

編集

要求に応じて生成される HTML:

<div class="field">
        <input checked="checked" id="question_status_open" name="question[status]" required="required" type="radio" value="open" />
        <label for="question_status">Open</label>
        <input id="question_status_closed" name="question[status]" required="required" type="radio" value="closed" />
        <label for="question_status">Closed</label>
</div><br />
4

1 に答える 1

0

私は間違っていますか、これらのdivが複数ありますか?

その場合、問題は、結果の html に同じ ID が複数あることです。

javascript を実行するには、html ID が一意である必要があります。例としての document.getElementById は、複数ではなく 1 つの要素のみを返します。

私が参照する ID は、question_status_open と question_status_closed です。

于 2012-10-15T09:40:12.130 に答える