2

Я использую chosen.js для множественного выбора, реализованного с помощью asp.netmvc3. Проверка на стороне клиента не работает с этим элементом управления с несколькими элементами.Как реализовать проверку на стороне клиента в MVC с selected.js

Способ, которым я реализую, используя вспомогательный помощник Html.Dropdownlist и после того, как dom загружен с JavaScript $("#dropdown1").chosen().

Он заменяет Select на div.

Ниже приведен код

обратного вызова код

function (data) { 
      $("#divnewdata").html(data); 

      $("#ddlcode1").chosen({ 
       disable_search_threshold: 10, 
       no_results_text: "Oops, nothing found!", 
       disable_search: false, 
      }); 

      $("#ddlCode1_chosen").find('.chosen-choices').removeClass('form-control').addClass('form-control'); 

      $("#ddlcode2").chosen({ 
       disable_search_threshold: 10, 
       no_results_text: "Oops, nothing found!", 
       disable_search: false, 
      }); 

      $("#ddlcode2_chosen").find('.chosen-choices').removeClass('form-control').addClass('form-control'); 

      $.validator.setDefaults({ 
       ignore: [] 
      }); 

     } 

Загрузка Java скрипты из страницы макета

<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>@ViewBag.Title - My ASP.NET Application</title> 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/modernizr") 
    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/bootstrap") 
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
    <script> 

      $('form').validate({ 
       ignore: [] 
      }); 
    </script> 
    <script src="~/Scripts/Common/Common.js"></script> 
</head> 

частичный вид пытаюсь загрузить

<script> 
    $(document).ready(function() { 
     $.validator.unobtrusive.parse("#formAddcodes"); 

     $.validator.setDefaults({ 
      ignore: [] 
     }); 
    }); 
</script> 

<link href="~/Content/chosen.css" rel="stylesheet" /> 
<script src="~/Scripts/chosen.jquery.min.js"></script> 
<script src="~/Scripts/Codes/Codes.js"></script> 


@using (Html.BeginForm("AddCodes", "Codes", FormMethod.Post, new { id = "formAddcodes" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
       <div class="form-group"> 
      @Html.LabelFor(model => model.code1, htmlAttributes: new { @class = "col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(model => model.code1, Model.Code1List as SelectList, new { @class = "form-control", id = "ddlcode1", multiple = "multiple" }) 
       @Html.ValidationMessageFor(model => model.code1, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.code2, htmlAttributes: new { @class = "col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(m => m.code2, Model.code2List as SelectList, new { @class = "form-control", id = "ddlcode2", multiple = "multiple" }) 
       @Html.ValidationMessageFor(model => model.code2, "", new { @class = "text-danger" }) 
      </div> 
     </div> 


     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Add" class="btn btn-primary" /> 
      </div> 
     </div> 
    </div> 
} 

ответ

1

chosen обновляет HTML, сделав оригинальный <select> элемент скрытый и скрытые элементы игнорируются по умолчанию. Вы можете изменить это поведение, используя либо следующие сценарии

$.validator.setDefaults({ 
    ignore: [] 
}); 

или

$('form').validate({ 
    ignore: [] 
}); 
+0

я пытался выше код, он не работает какой-либо другой способ – Badrinarayana

+0

Тогда вы еще не сделали это правильно. Он должен идти после того, как вы загрузили сценарии jquery, но не в 'document.ready'. Какую версию jquery вы используете? Возможно, вам придется использовать 'ignore:" "', если его старая версия –

+0

JQuery Version ** ** 1.10.2 **. Загружаем сценарии jquery на моей странице макета. И место, где я использую выбранный элемент управления, является одним из частичного представления, загружая через вызов ajax. – Badrinarayana