Ненавязчивая форма проверки на стороне клиента ASP.NET Core запускается даже при сбое проверки - PullRequest
0 голосов
/ 26 декабря 2018

Примечание. Это относится к .NET Core v2.0.Вы можете найти похожие посты, но они не решают проблему, с которой я сталкиваюсь.

Я применяю Ненавязчивая сторона клиента проверка с кодом, как показано ниже:

<form asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" onsubmit="showPleaseWait()" >
    <div asp-validation-summary="All" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="Username" class="control-label"></label>
        <input asp-for="Username" class="form-control" placeholder="Username"  />
        <span asp-validation-for="Username" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="Password" class="control-label"></label>
        <input asp-for="Password" value="" class="form-control" placeholder="Password" />
        <span asp-validation-for="Password" class="text-danger"></span>
    </div>
    <div class="form-group">
        <button type="submit"  class="btn btn-success btn-lg" style="margin:auto;display:block">Log in</button>
    </div>
</form>

Хорошо, что он выполняет проверку на стороне клиента.

Тем не менее, событие form.onsubmit возникает даже в случае сбоя проверки.В результате мой showPleaseWait метод вызывается.Я считаю, что это не следует вызывать, так как форма еще не отправлена ​​из-за ошибки проверки.

Ниже приведена модель:

public class LoginViewModel
{
    [Required]        
    public string Username { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

Любое решение или обходной путь будут высоко оценены.

1 Ответ

0 голосов
/ 26 декабря 2018

Плагины jQuery Unobtrusive Validation и jQuery Validation более высокого уровня не блокируют событие отправки, которое, как вы заметили, означает, что ваша функция showPleaseWait() будет вызываться всякий раз, когда пользователь пытается отправить форму.

Один из вариантов выполнения этой работы - запросить статус проверки из вашей функции showPleaseWait, прежде чем пытаться запустить собственный код.Вот пример:

function showPleaseWait() {
    if ($("form").valid()) {
        // Your code here.
    }
}

Эта реализация использует преимущества функции jQuery Validation valid, которая:

Проверяет, является ли выбранная форма действительной илидопустимы ли все выбранные элементы.

Я только что использовал простой селектор $("form") выше, но это может потребоваться более конкретно, если у вас есть несколько форм на одной странице и т. д.

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