0

MVC モデルにバインドしたい一連のチェックボックスがあります。そのため、チェックボックスの値を取得し、これらの値をモデルにバインドするための適切な ID を持つ非表示の入力フィールドに追加しようとしました。

@foreach (var answer in question.Answers)
{
   <input type='checkbox' id='@answer.Id' value='@(answer.AnswerText)' onchange="toggleHidden(this)"/> 
}
<input type="hidden" id='[@countHolder]' name='WrappedAnswers' value="" />

そして、私のJavaScriptコードは次のとおりです。

function toggleHidden(elem) {
    var isChecked = $(elem).is(":checked");
    if (isChecked) {
        var checkString = elem.value + "|";
        var currentString = $('#[@(countHolder)]').val();
        $('#[@(countHolder)]').val(currentString + checkString);
    }
    else {
        // Remove checkString from $('#[@(countHolder)]').value
    }
}

ご想像のとおり、コードは機能しません。私はjavascriptがあまり得意ではありません。何が間違っていますか。

ありがとう。

編集:レンダリングされたコードは次のとおりです

<!-- Answers -->
<input type='checkbox' id='158' name='WrappedAnswers' value='Answer 1' onchange="toggleHidden(this)"/> 
<input type='checkbox' id='159' name='WrappedAnswers' value='Answer 2' onchange="toggleHidden(this)"/> 
<input type='checkbox' id='160' name='WrappedAnswers' value='Answer 3' onchange="toggleHidden(this)"/> 

<input type="hidden" id='[5]' name='WrappedAnswers' value="" />

<script type="text/javascript">
function toggleHidden(elem) {
     var isChecked = $(elem).is(":checked");
     if (isChecked) {
        var checkString = elem.value + "|";                                          
        $('#[5]').val($('#[5]').val() + checkString);
     }
     else {
     }
 }
 </script>
 <!-- End Answers -->
4

1 に答える 1

1

すべての変更(チェック/チェック解除)を処理し、値を「パイプ区切り」文字列(隠しフィールドの値)に追加/削除する代わりに、通過するフォームの「送信時」ハンドラーを追加しますチェックボックスをオンにして、チェックされているものを追加します。

チェックボックスを div コンテナで囲むと、jQuery から簡単に選択できます。したがって、コードは次のようになります。

<div id="checkContainer">
    @foreach (var answer in question.Answers)
    {
        <input type="checkbox" id="@answer.Id" value="@(answer.AnswerText)" /> 
    }
</div>
<input type="hidden" id="countHolder" name="WrappedAnswers" value="" />
<script>
     $("form").submit() {
          var $checkboxes = $("#checkContainer").find("[type='checkbox']");
          $checkboxes.each(function() {
              if ($(this).is(":checked")) {                  
                  $("#countHolder").val($("#countHolder").val() + "|" + $(this)val());
              }
          });
          return true;
     }
</script>
于 2013-03-07T21:52:21.840 に答える