如何验证两个选择输入是否相等

问题描述 投票:0回答:2

我有两个带值的选择输入,我正在尝试进行验证。

如果第二个选择的值等于第一个值,则应弹出一条消息来更改该值。

我尝试使用$.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>
javascript c# asp.net-mvc unobtrusive-validation
2个回答
0
投票

更好地使用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);
    }
 }

0
投票

您的代码工作正常,像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");
© www.soinside.com 2019 - 2024. All rights reserved.