Я хочу отфильтровать вопросы безопасности таким образом, что, если я выберу вопрос из списка вопросов, для следующих вопросов я больше не вижу вопроса в списке вопросов безопасности. Это делается для предотвращения дублирования выбора вопросов безопасности.Отбирательный список фильтра kendo для удаления параметров
Вот jsfiddle с чистой реализации Jquery:
мне было интересно, как я могу использовать тот же подход для фильтрации кендо DropDownLists:
Э.Г. У меня есть три DropDownLists как:
<table style="float: left; width:300px;">
<tr>
<td>
<div class="editor-field">
@(Html.Kendo().DropDownListFor(m => m.Q1Id).HtmlAttributes(
new { style = "width:250px;", @id = "idQuestion1", @class="security"})
.Name("Q1DropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Controllers.AccountController.SecurityQuestionList())
.Enable(true)
.Events(e=>e.Change("CreateAccount.QuestionChanged")))
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.A1, new { @class = "formTextbox k-textbox", @id = "idAnswer1" })
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@(Html.Kendo().DropDownListFor(m => m.Q2Id).HtmlAttributes(
new { style = "width:250px;", @id = "idQuestion2", @class="security" })
.Name("Q2DropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Controllers.AccountController.SecurityQuestionList())
.Enable(true)
.Events(e=>e.Change("CreateAccount.QuestionChanged")))
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.A2, new { @class = "formTextbox k-textbox", @id = "idAnswer2" })
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@(Html.Kendo().DropDownListFor(m => m.Q3Id).HtmlAttributes(
new { style = "width:250px;", @id = "idQuestion3", @class="security" })
.Name("Q3DropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Controllers.AccountController.SecurityQuestionList())
.Enable(true)
.Events(e=>e.Change("CreateAccount.QuestionChanged")))
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.A3, new { @class = "formTextbox k-textbox", @id = "idAnswer3" })
</div>
</td>
</tr>
</table>
Я попытался это, но не работает:
QuestionChanged: function() {
var sec = $('.security');
sec.change(function() {
sec.find('option').show().end().each(function() {
$('option[value="' + $(this).val() + '"]:not(:selected):not([value="0"])', sec).hide();
});
}).change();
}
Это интересный подход. Тем не менее, я использую MVC. Итак, я полагаю, что логика должна быть в моем контроллере или я могу сделать это в js? –
Что такое dd1, dd2, dd3? Почему у меня есть viewmodel.dd1 и т. Д.? Спасибо за вашу помощь! :) –
Вам не нужно следовать моему коду, так как я не использую mvc, но я думаю, что вы можете сделать это на javascript в своей функции QuestionChanged, поскольку это проверка на стороне клиента (вроде). Просто получите значение dd1, dd2, dd3 (это значение выбранного параметра из каждого раскрывающегося списка), сделайте цикл через весь раскрывающийся список и покажите/скройте, как условие соответствует –