【问题标题】:How to validate two select inputs for equality如何验证两个选择输入是否相等
【发布时间】:2019-02-12 15:09:46
【问题描述】:

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

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

我尝试使用$.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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您的代码运行良好,添加与 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");
      

      【讨论】:

      猜你喜欢
      • 2020-01-02
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2018-10-03
      相关资源
      最近更新 更多