У меня есть form
, где говорят, что у меня есть 2 элемента управления. A select
, который был настроен с использованием bootstrap-selectpicker
и textbox
, которые являются strongly typed
с viewmodel
. Ниже приведены подробные сведения о структуре проекта и вот DEMO и проверка использует jquery-validatejquery validate on @ Html.DropDownListFor с bootstrap selectpicker
SampleViewModel.cs
public class SampleViewModel
{
[Required(ErrorMessage="Please Select a Role")]
//Not sure whether Required has to be assigned to RoleId or Roles
public int RoleId { get; set; }
public SelectList Roles { get; set; }
[Required(ErrorMessage="Please Enter a name")]
public string name{get;set;}
}
Вид
<div class="container">
<div class="col-md-6 col-md-offset-3">
<h1>Hello Stranger</h1>
@using (Html.BeginForm("", "", FormMethod.Post,
new { enctype = "multipart/form-data", id="frmSample" }))
{
<div class="form-group">
@Html.DropDownListFor(m => m.RoleId, Model.Roles, "Please Select your Country", new{@class="selectpicker"})
@Html.ValidationMessageFor(m=>m.RoleId)
</div>
<div class="form-group">
@Html.TextBoxFor(m => m.name, null, new{@class="form-control"})
@Html.ValidationMessageFor(m=>m.name)
</div>
<button type="button" class="btn btn-success submit">Ask</button>
}
<br/><br/>
</div>
</div>
Контроллер
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
SampleViewModel model=new SampleViewModel();
model.Roles = new SelectList(new string[] { "Admin", "Manager" });
return View(model);
}
}
JS
$(document).ready(function(){
$('.selectpicker').selectpicker();
$("#frmSample").validate({
onfocusout: true
});
});
$('.submit').on('click',function(){
if($("#frmSample").valid())
alert(true);
});
Проблема
- Проблема я столкнулся мой
dropdown
элемент не получает подтверждено с помощьюjquery validation
тогда мойtextbox
получает проверено. Может быть, проблема заключается в том, как я инициализирую, или , присваивая атрибутRequired
конкретному атрибутуmodel
, и я не уверен, для чего нужно назначить атрибутrequired
. - Я дал
onfocusout:true
для проверки на фокус из но если вы печатаете что-то наtextbox
и удаления содержимого, проверка не бывает
Любая помощь по этому вопросу высоко ценится.
'.selectpicker()' я предполагаю, является JQuery плагин, который будет скрыть элемент '
Всегда с хорошим ответом @StephenMuecke, и я ожидал этого .. :) Но согласно моему исследованию мне нужно установить 'ignore: []' по проверке в соответствии с ** [этот вопрос и ответы] (http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields) **, но все же это не полезно .. :( –
Это должно работать нормально, но ваша демонстрация имеет '@ Html.ValidationMessageFor (m => m.Roles)' - это должно быть 'RoleId' –