JQuery Newbie: объединить проверить с кнопкой скрытия отправить - PullRequest
1 голос
/ 06 апреля 2010

Я новый JQuery.Я получил подтверждение для работы с моей формой (MVC 1.0 / C #) с этим:

      <script type="text/javascript">
      if (document.forms.length > 0) { document.forms[0].id = "PageForm"; document.forms[0].name = "PageForm"; }
      $(document).ready(function() {
          $("#PageForm").validate({
              rules: {
                  SigP: { required: true }
              },
              messages: {
                  SigP: "<font color='red'><b>A Sig Value is required. </b></font>"
              }
          });

      });
  </script>

Я также хочу скрыть кнопку «Отправить», чтобы предотвратить синдром дергающейся мыши от повторяющегося ввода до завершения контроллера и перенаправления(Я использую шаблон георадара).Следующее работает для этой цели:

  <script type="text/javascript">  
  //
  // prevent double-click on submit
  //
      jQuery('input[type=submit]').click(function() {
          if (jQuery.data(this, 'clicked')) {
              return false;
          }
          else {
              jQuery.data(this, 'clicked', true);
              return true;
          }
      });
  </script>

Однако я не могу заставить их работать вместе.В частности, если выполнить валидацию не удалось после нажатия кнопки «Отправить» (что происходит с учетом того, как работает форма), то я не смогу снова отправить форму, если не выполню обновление браузера, которое сбрасывает свойство «нажал».

Как я могу переписать второй метод выше, чтобы не устанавливать выбранное свойство , если форма не проверяется?

Thx.

Ответы [ 3 ]

1 голос
/ 19 мая 2011

Для тех, кто все еще ищет ответ, каким я был, вот как я это сделал:

$("#form1").validate({

    rules: {
        customer_title: "required",
        customer_firstName: "required",
        customer_lastName: "required"
        }
    },
    messages: {
        customer_title: "Please select a title",
        customer_firstName: "Please enter a firstname",
        customer_lastName: "Please enter a lastname"
        }
    },
        submitHandler: function(form) {
        //submitButtonX is the class attribute i placed on the button
        $('.submitButtonX').attr('disabled', 'disabled');
        form.submit();
    }
});
0 голосов
/ 06 апреля 2010

Я бы сделал это так:

$('#PageForm').submit(function() {
   if($(this).valid()) $(':submit', this).attr('disabled', true);
});

Это срабатывает при отправке формы, ищет любую кнопку отправки внутри и отключает ее, если форма была действительной.

Используйте $('#PageForm :submit').removeAttr('disabled'); для повторного включения кнопки, когда будете готовы.

0 голосов
/ 06 апреля 2010

Если вы используете этот плагин проверки, он поставляется с методом valid ().

...