Сообщение проверки на стороне клиента не отображается, когда добавлен JavaScript для отключения кнопки отправки - PullRequest
1 голос
/ 19 июня 2019

У меня есть простая форма с 2 раскрывающимися полями и кнопкой отправки в моем приложении MVC.Я включил проверку на стороне клиента, и она работает нормально.Теперь я добавил JavaScript, чтобы отключить кнопку отправки, чтобы форма не отправлялась дважды.По какой-то неизвестной причине сообщение проверки клиента не отображается, когда я добавляю этот сценарий.

Это моя форма:

    @using (Html.BeginForm("Recycle", "GetList", FormMethod.Post, new { id = "myForm" }))
    {
        <!-- Server list -->
        <div>
            <span>Site type:&nbsp;</span>
            @Html.DropDownListFor(m => m.uInputS, new List<SelectListItem>
            {
                new SelectListItem {Text = "text", Value = "value" },
                new SelectListItem {Text = "text", Value = "value" }
            }, "Select site type")
            @Html.ValidationMessageFor(m => m.uInputS, "", new { @class = "error" })
        </div>
        <!-- Application list -->
        <br />
        <div>
            <span>Application:&nbsp;</span>
            @Html.DropDownListFor(m => m.uInputA, new SelectList(string.Empty, "Value"))
            @Html.ValidationMessageFor(m => m.uInputA, "", new { @class = "error" })
        </div>
        <br />
        <!-- Submit-->
        <div>
            <input id="Submit1" type="submit" value="Submit" onclick="return FreezeSubmit();" />
        </div>
    }

Ниже приведен jquery, который я использовал для отключения кнопки отправки.

<script>
 function FreezeSubmit() {
 var s = $("#uInputS").val();
 var a = $("#uInputA").val();
 if ((s && a)) {
    $('#myForm').submit();
    $('#Submit1').prop('disabled', true);
    return true;
 }
 else {
    $('#Submit1').prop('disabled', false);
    return false;
 }
}
</script>

Это моя модель:

    public class GetList
    {
      [Required(ErrorMessage = "Please select site type")]
      public string uInputS { get; set; }

      [Required(ErrorMessage = "Please select application name")]
      public string uInputA { get; set; }
    }

Я очень новичок в программировании и не могу понять, почему сообщение проверки клиента не отображается, потому что я добавил некоторый JavaScript.Любая помощь приветствуется.Спасибо!

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Удалите onclick в

<input id="Submit1" type="submit" value="Submit" onclick="return FreezeSubmit();" />

, измените на

<input id="Submit1" type="submit" value="Submit" />

, и вам нужно изменить ваш скрипт на

<script>
 $(document).ready(function(){
 checkEmpty()
 })

 $('input').change(function() {
     checkEmpty();
 });

 function checkEmpty(){

  var s = $("#uInputS").val();
 var a = $("#uInputA").val();
 if ((s && a)) {

    $('#Submit1').prop('disabled', true);

 }
 else {
    $('#Submit1').prop('disabled', false);

 }
 }
</script>
0 голосов
/ 23 июня 2019

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

  $( "#your_form_id" ).submit(function(event) { // Handler for .submit() called.
     $('#Submit1').prop('disabled', true);
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...