Получить сообщение проверки от JQuery validator - PullRequest
0 голосов
/ 23 февраля 2019

Использование MVC, .Net Core 2.1, начальная загрузка, ненавязчивая проверка JQuery ... Есть ли способ извлечь сообщение об ошибке проверки из функции javascript?

Принимая это в качестве моей модели, обратите внимание насообщение об ошибке: «Требуется строка 1»

public class TestObj
{
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "String 1 is required.")]
    public string str1 { get; set; }
    public TestObj() { }
    public TestObj(string i_str)
    {
        this.str1 = i_str;
    }
}

Это мой контроллер

    public IActionResult Test()
    {
        TestObj model = new TestObj();
        model = new TestObj("test1");
        return View(model);
    }

Это как cshtml

<form asp-action="Test" asp-controller="Home" method="post" id="myform">
    <div class="row">
        <div class="col-xs-2" style="width:5em;">
            <input asp-for="@Model.str1" class="form-control small_inp_box" />
        </div>
    </div>
    <div style="clear:both; margin-top:1em;"></div>
    <div asp-validation-summary="All" class="text-danger"></div>
    <div style="clear:both; margin-top:1em;">
        <label id="lbl_msg1"></label>
    </div>
    <input type="submit" name="Submit" class="btn btn-outline-dark" />
</form>

И это как JavaScript

    <script>
    $(document).ready(function () {
        $("#lbl_msg1").text("Ready");
        $(".small_inp_box:first").focus();
    });
    $(".small_inp_box").focusout(function () {
        if (!$(this).valid()) {
            $(this).addClass("red");
            console.log("invalid!");
            console.log($(this).dataset.valRequired);
        }
        else {
            $(this).removeClass("red");
            console.log("valid!");
        }
    })
</script

Могу ли я получить сообщение о необходимой проверке «Требуется строка 1» из функции фокуса?

1 Ответ

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

Я не уверен, что это лучший способ, но он должен работать.Поместите это в функцию фокусировки:

var fv = $('#myform').validate();

// setTimeout is needed to let validation to complete
var currentElement = this;
setTimeout(function() {
    let error = fv.errorList.filter(function (e) { return e.element == currentElement; })[0];
    console.log(error.message);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...