我正在asp.net mvc中开发一个应用程序,并尝试使用jquery验证插件进行验证。
我有一个下拉列表,使用jQuery代码转换为组合框:
http://jqueryui.com/autocomplete/#combobox
我遇到的问题是验证问题。如果用户在没有从下拉列表中选择值的情况下提交表单,则会在帖子后面显示错误消息。
我遇到的问题是,如果我从底层下拉列表中手动选择一个值,则错误消息会消失。但是,如果我使用组合框,那么即使基础下拉列表中的值发生更改,错误消息也不会消失。
更新值的组合框中的代码是:
this._on( this.input, {
autocompleteselect: function( event, ui ) {
ui.item.option.selected = true;
this._trigger( "select", event, {
item: ui.item.option
});
},
jquery中的验证是如何完成的?是否不检查基础下拉列表的值是否发生变化?
谢谢!
---- HTML Markup和jQuery。
对于HTML。我正在使用asp .net mvc代码如下:
<div class="form-group">
@Html.LabelFor(model => model.Property.Area, new { @class = "col-xs-12 col-sm-4 col-md-2" })
<div class="input-group col-xs-12 col-sm-8 col-md-4">@Html.DropDownListFor(model => model.Property.Area, Model.AreaLookUps, "--Select Area--", new { onchange = "initializeMapAndGeocode();", @class = "form-control combobox" })</div>
<div id="property-area-error" class="col-sm-offset-4 col-md-offset-2"><span class="text-danger">@Html.ValidationMessageFor(model => model.Property.Area)</span></div>
</div>
这会生成以下标记
<div class="form-group">
<label class="col-xs-12 col-sm-4 col-md-2" for="Property_Area">Area*</label>
<div class="input-group col-xs-12 col-sm-8 col-md-4">
<select class="form-control combobox" data-error-div-id="property-area-error" data-val="true" data-val-number="The field Area* must be a number." data-val-required="Please select the appropiate option." id="Property_Area" name="Property.Area" onchange="initializeMapAndGeocode();">
<option value="">--Select Area--</option>
我没有任何验证方法。我只是简单地包含了jQuery validate和jQuery.Unobtrusive.Validation库。
感谢。
- 更新 我通过添加错误div为“id”并将id作为数据属性添加到“select”来创建了一种解决方法。在组合框脚本中,当组合框值更改时,我隐藏了此错误div。这可能不是最好的解决方案 - 但它是一种解决方法。
答案 0 :(得分:0)
引用OP:
“如何完成jquery中的验证?是否不检查基础下拉列表的值是否发生变化?”
它只是检查指定的 input
,textarea
和select
元素(在form
容器中)。如果您正在执行将GUI元素中的数据移动到隐藏的input
,textarea
或select
元素的操作,则由您自己在正确的元素上手动声明规则。您可能还需要使用.valid()
方法手动触发元素验证。