Как проверить два выбранных входа для равенства - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть два выбранных входа со значениями, и я пытаюсь выполнить проверку.

Если второй выбор имеет значение, равное первому, должно появиться сообщение для изменения значения.

Я пытался с $.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>

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Ваш код работает нормально, добавьте тот же класс, что и 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");
0 голосов
/ 12 февраля 2019

Лучше использовать атрибут 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);
    }
 }
...