Проверка JQuery: «ничего не выбрано» в Safari - PullRequest
1 голос
/ 12 октября 2011

Я использую JQuery Validate, и это делает самую странную вещь в Safari.Если я ничего не выбираю, это дает мне правильное сообщение об ошибке.Но как только я выполняю требования к форме и нажимаю «Отправить», она просто обновляет страницу, а не отправляет форму.Сообщение консоли «ничего не выбрано, не может быть проверено, ничего не возвращается».

Это мой скрипт проверки:


$(document).ready(function() {
    /* ------------
       FORM #STORY1 
       ------------ */
    $('#class').focus(function(){
        $('#alum').attr('checked',true);
    });
    $('#college').focus(function(){
        $('#transfer').attr('checked',true);
    });
    /* The validation script */
    $("#story1").submit(function(){ return false; });
     // Turn our validator into a function
     var story1Validate = function(form){
          $(form).find('div#err_msg').hide();
          $(form).find('#submitBtn').removeAttr('disabled');
          $(form).validate({
               debug:false,
               submitHandler: function(form) {
                   $('#submitBtn').attr('disabled','disabled');
                   $('#submitBtn').hide();
                   $('#process').show();
                   $('#recaptcha_widget_div').hide();
                   form.submit();
               },
               errorContainer: $(form).find('div#err_msg'),
               errorPlacement: function(error, element) {
                    $(form).find('div#err_msg').show();
                    error.appendTo(form+' div#err_msg');
               },
               rules: {
                    type: "required",
                    class: {
                         required: "#alum:checked"
                    },
                    college: {
                         required: "#transfer:checked"
                    }       
               },//rules
               messages: {
                    type: "Please make a selection.",
                    class: {
                         required:"You indicated that you're an alum. Please enter the year you graduated."
                    },
                    college: {
                         required:"You indicated that you're a transfer student. Please enter the name of the school to which you transferred."
                    }
               }//messages
          });//form validate
     }//customValidation function
     // Attach our custom form function to the form
     story1Validate("#story1");
});

И это HTML-код сопровождающей формы:

      <form id="story1" name="story1" method="post" action="your-story/index.php" class="form-intro">
        <h3>I am a...</h3>
        <p>
          <input name="type" type="radio" class="input-radio" id="alum" value="alum" /> <label for="alum">Alum, class of</label><br />
                 <input name="class" type="text" class="input-txt" id="class" value="" />
        </p>
        <p>
          <input name="type" type="radio" class="input-radio" id="transfer" value="transfer" /> <label for="transfer">Transfer student to</label><br />
                 <input name="college" type="text" class="input-txt" id="college" value="" />
        </p>
        <p>
          <input name="type" type="radio" class="input-radio" id="student" value="student" /> <label for="student">Current student</label>
        </p>
        <p>
          <input name="type" type="radio" class="input-radio" id="staff" value="staff" /> <label for="staff">Professor or staff member</label>
        </p>
        <p>
          <input name="type" type="radio" class="input-radio" id="" value="other" /> <label for="other">None of the above</label>
        </p>
    <div id="err_msg">
    </div>
        <footer class="form-nav">
          <input name="submitBtn" type="submit" class="input-btn" id="submitBtn" value="Next &gt;" />
        </footer>
      </form>

Я видел, как это происходит в Safari (как на Mac, так и на ПК), и иногда, когда я отправляю форму, нажимаю кнопку «Назад» в Firefox.Кажется, в IE тоже нормально работает.

Есть идеи ??Это сводит меня с ума!

1 Ответ

0 голосов
/ 12 октября 2011

Хорошо, у меня был друг, посмотревший на него в своем Safari, и консоль HIS выдавала ошибку в JS (хотя моя нет).Очевидно, я не должен был называть любое из полей ввода "класс".Я должен был знать лучше.В любом случае, изменив его с name = "class" на name = "classOf" во всех случаях избавился от этого.

Затем я изучил еще несколько вещей и обнаружил, что им не нравится отключать кнопку отправки перед формой.Отправить().Поэтому я изменил обработчик отправки на:

               submitHandler: function(form) {
               form.submit();
           }

Теперь мне просто нужно выяснить, почему моя консоль не выдавала эту первую ошибку.; _;

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