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 回答