странное поведение плагина jQuery Steps

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я использую плагин jQuery Steps (ССЫЛКА ЗДЕСЬ). Проблема заключается в одном из операторов IF, который возвращает wizzard к первому шагу (не на шаге, который в данный момент проиндексирован). Все операторы IF работают корректно, ожидайте этого. Что, если statemnt проверяет, указан ли номер телефона в правильном формате:

Вот код:

 onFinishing: function (event, currentIndex) {
                            var filter = /^(([^<>()[]\.,;:s@"] (.[^<>()[]\.,;:s@"] )*)|(". "))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9] .) [a-zA-Z]{2,}))$/;
                            if (!filter.test($("#email").val())) {
                            $("#emailError").text("e-mail is wrong");
                            return false;
                            }
                            if (!filter.test($("#email2").val())) {
                            $("#email2Error").text("e-mail is wrong");
                            return false;
                            }
                            var newnum = parseInt($("#numppl").val());
                            if(Math.floor(newnum) != newnum amp;amp; !$.isNumeric(newnum)){
                            $("#numpplError").text("Number error");
                            return false;
                            }
                            if (!($("#numppl").val() >= 1 amp;amp; $("#numppl").val()<=10)){
                            $("#numpplError").text("Number error");
                            return false;
                            }
                             if ($("#email").val()!=($("#email2").val())){
                             $("#email2Error").text("address don't match");
                             return false;
                             }
                            /*IF Statment bellow is bugged */
                            if ($("#phone").length) {
                             if(!$("#phone").match(/^[ ]?([d]{0,3})?[(.-s]?([d]{3})[).-s]*([d]{3})[.-s]?([d]{4})$/)){
                              $("#phoneError").text("Wrong format");
                                return false;
                             }
                             }
                             return true; 
                             }, 
  

Ответ №1:

Внесите исправление в оператор IF, который вы прокомментировали как ошибку :

        pval = $("#phone").val(); //Store the value of "Phone"
       if (pval.length) {   //Check for non empty
                         if(!pval.match(/^[ ]?([d]{0,3})?[(.-s]?([d]{3})[).-s]*([d]{3})[.-s]?([d]{4})$/))  { // Check format.
                               $("#phoneError").text("Wrong format");
                               return false;
                               }
                         }
  

Ответ №2:

$("#phone").length не совпадает с длиной телефонного номера

несмотря на $("#phone").length использование ($("#phone").val()).length

аналогично, несмотря на $("#phone").match(regular Expression) использование

 ($("#phone").val()).match(regular Expression)