我有两个带值的选择输入,我正在尝试进行验证。
如果第二个选择的值等于第一个值,则应弹出一条消息来更改该值。
我尝试使用$.validator
,但我仍然无法使其工作。
$('#SubstituteUserGid').change(function () {
$('#mainForm').validate({
rules: {
SubstituteUserGid: { notEqual: userName }
}
});
});
jQuery.validator.addMethod("notEqual", function (value, element, param) {
return this.optional(element) || value != param;
}, "Please specify a different (non-default) value");
这是HTML
<select asp-for="UserGid" data-val-required="Моля изберете служител"
placeholder="Моля изберете служител" class="form-control" data-val="true">
@foreach (var user in Model.AllActiveUsers)
{
<option value="@user.Gid" data-balance="@user.Balance">@user.Name</option>
}
</select>
<select asp-for="SubstituteUserGid" class="form-control" data-val="true">
<option value="">-- Без заместващ --</option>
@foreach (var user in Model.AllActiveUsers)
{
<option value="@user.Gid">@user.Name</option>
}
</select>
更好地使用Remote
属性,它将极大地满足您的目的。
说你的模型类如下:
public class Foo
{
public string UserGid {get; set;}
[Remote(action: "IsUserGuidEquals", controller: "Validation",AdditionalFields = "UserGid", ErrorMessage = "UserId are equals! Please select different one!")]
public string SubstituteUserGid {get; set;}
}
然后在你的控制器中的IsUserGuidEquals
方法如下:
public class ValidationController : Controller
{
public JsonResult IsUserGuidEquals(string substituteUserGid, string userGid)
{
return Json(substituteUserGid != userGid,JsonRequestBehavior.AllowGet);
}
}
您的代码工作正常,像activeuser一样添加相同的类并再次尝试,
<select asp-for="UserGid" data-val-required="Моля изберете служител"
placeholder="Моля изберете служител" class="form-control activeuser" data-val="true">
@foreach (var user in Model.AllActiveUsers)
{
<option value="@user.Gid" data-balance="@user.Balance">@user.Name</option>
}
</select>
<select asp-for="SubstituteUserGid" class="form-control activeuser" data-val="true">
<option value="">-- Без заместващ --</option>
@foreach (var user in Model.AllActiveUsers)
{
<option value="@user.Gid">@user.Name</option>
}
</select>
$('#SubstituteUserGid').change(function () {
$('.activeuser').validate({
rules: {
SubstituteUserGid: { notEqual: userName }
}
});
});
jQuery.validator.addMethod("notEqual", function (value, element, param) {
return this.optional(element) || value != param;
}, "Please specify a different (non-default) value");