Принятие флажка проверенное имя значения динамически с помощью Jquery MVC3 - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть эти представления

view1

  @if (@Model.QuestionType == 3)
 {
<div data-role="fieldcontain">
    @using (Html.BeginForm("SaveCheckbox", "GetQuestion", Model))
    {
        @Html.AntiForgeryToken() 
        <fieldset data-role="controlgroup" id="@(Model.QuestionNo)_fld">
            <label class="select">@Model.QuestionText
            </label>
            <br />
            @foreach (var item in Model.Options)
            {
                if (@item.IsAnswer == true)
                {
                <input type="checkbox" checked="checked" name="selectedObjects" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" class="custom"  />
                }
                else
                {
                <input type="checkbox"  name="selectedObjects" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" class="custom"   />   
                }
                <label for="@(Model.QuestionNo)_@(item.OptionNumber)_chk">
                    @item.OptionText</label> 
            }
            <br />
        </fieldset>
        <p>
            <input type="submit" id="@(Model.QuestionNo)_chk" onclick="return SaveCheckBoxNew(this);" value="Next" />
        </p>
    }
</div>
  }

   @if (@Model.QuestionType == 4)
  {
   <div data-role="fieldcontain">
    @using (Html.BeginForm("SaveCheckBoxTextInput", "GetQuestion", Model))
    {
        @Html.AntiForgeryToken() 
        <fieldset data-role="controlgroup" id="@(Model.QuestionNo)_fld">
            <label id="l3" for="select-choice-1" class="select">@Model.QuestionText
            </label>
            <br />
            @foreach (var item in Model.Options)
            {

                if (@item.IsAnswer == true)
                {
                    if (@item.OptionText == "Other")
                    {
                <input type="checkbox" checked="checked" name="selectedObjects" questionid="@Model.QuestionNo" other="true" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" onchange="selectCheckbox(this);" />
                <input type="text" value="@item.Answer" name="selectedObjects" id="@(Model.QuestionNo)_chktxt"/>
                    }
                    else
                    {
                <input type="checkbox" checked="checked" name="selectedObjects" questionid="@Model.QuestionNo" other="false" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" onchange="selectCheckbox(this);" />
                    }
                }
                else
                {
                    if (@item.OptionText == "Other")
                    {
                <input type="checkbox" name="selectedObjects" questionid="@Model.QuestionNo" other="true" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" onchange="selectCheckbox(this);" />
                <input type="text" name="selectedObjects" id="@(Model.QuestionNo)_chktxt" style="display: none;" />
                    }
                    else
                    {
                <input type="checkbox" name="selectedObjects" questionid="@Model.QuestionNo" other="false" id="@(Model.QuestionNo)_@(item.OptionNumber)_chk" value="@item.OptionNumber" onchange="selectCheckbox(this);" />
                    }
                }

                <label for="@(Model.QuestionNo)_@(item.OptionNumber)_chk">
                    @item.OptionText</label> 
            }
            <br />
        </fieldset>
        <p>
            <input type="submit" id="@(Model.QuestionNo)__chktxtinput" value="Next" onclick="return validateCheckBoxTextInput(this);" />
        </p>
    }
</div>
 }

Я отображаю то же представление на основе типов вопросов.Таким образом, я написал отдельные javascripts, как это для обоих:

Для 1:

function SaveCheckBoxNew(button) {
    alert($('input:checkbox[name=selectedObjects]:checked').val());
}

Для 2:

function validateCheckBoxTextInput(button){
alert($('input:checkbox[name=selectedObjects]:checked').val());
}

Так что если я не поставлю галочку вво втором представлении отображается то же значение, которое было выбрано в первом представлении.

Мне нужно получить значение NULL, если во втором не установлен ни один флажок, почему выбранные имена объектов не очищаются.

Как мне это решить?Заранее благодарим за помощь.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

Я не уверен, что ваш синтаксис правильный. Что я использую для флажков это:

$('#selectedObjects').is(':checked')

Это обычно работает для меня. Может быть, синтаксис не проблема, но вы могли бы проверить это ...

0 голосов
/ 02 декабря 2011

попробуй

$(this).closest("input:checkbox[name=selectedObjects]:checked").val());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...