jQuery Если myform.valid() имеет значение true, то запустите другую функцию jQuery?

#jquery #validation

#jquery #проверка

Вопрос:

У меня есть функция jQuery, которую я хотел бы выполнить, только если проверка формы верна
, у меня есть проверка, и другие jQuery работают нормально.
проблема в том, что теперь и проверка, и другая функция выполняются одновременно.
Я хотел бы запустить другую функцию, только если проверка формы верна. вот мой скрипт

 <script>
            $(document).ready(function () {
                $.validator.addClassRules({
                    fileName: {
                        required: true
                    }
                });
                $("#myform").validate();
                if ($("#myform").valid()) {
                    $(function () {
                        $('#myform').submit(function () {
                            var cboxes = ($('input:checkbox:checked').filter(":checked").length);
                            var nboxes = ($(":checkbox:not(:checked)").length);
                            if ((cboxes > 0) amp;amp; (nboxes > 0)) {
                                confirm('You have Checked only few locations among the List. n Are you sure, you do not want to Prescribe from the other locations? ');
                            } else if (cboxes == 0) {
                                alert('Please select atleast One Address n Where you would prefer to prescribe from.');
                                return false;
                            }
                            else {
                                return true;
                            }
                        });
                    });
                }
            });
</script>
  

пожалуйста, посоветуйте, как я могу это сделать?

Комментарии:

1. Каков ваш код на данный момент? Разместите соответствующие части, и мы посмотрим.

Ответ №1:

Если вы используете плагин jQuery validate, то метод valid() возвращает логическое значение, указывающее, прошла ли форма успешную проверку, поэтому вы могли бы просто сделать:

 if ($("#myform").valid()) {
    CallSomeOtherFunction();
}
  

Комментарии:

1. Я мог бы выбрать ваши предложения, поэтому я вставил свой скрипт, надеюсь, вы сможете мне помочь лучше

Ответ №2:

Если вы используете стандартный плагин, такой код должен поддерживаться:

 $(document).ready(function() {
    $("#myForm").validate({ 
        submitHandler: function(form) {
            SomeFuncHere();
        }
    });
})
  

Код в submitHandler должен быть вызван после успешной проверки.

Редактировать: на основе вашего кода попробуйте это вместо:

 $("#myform").validate({ 
    submitHandler: function(form) {
        var cboxes = ($('input:checkbox:checked').filter(":checked").length);
        var nboxes = ($(":checkbox:not(:checked)").length);
        var flag = false;
        if ((cboxes > 0) amp;amp; (nboxes > 0)) {
            flag = confirm('You have Checked only few locations among the List. n Are you sure, you do not want to Prescribe from the other locations? ');
        } else if (cboxes == 0) {
            alert('Please select atleast One Address n Where you would prefer to prescribe from.');
        }
        else {
            flag = true;
        }
        return flag;
    }
});
  

Комментарии:

1. Я мог бы выбрать ваши предложения, поэтому я вставил свой скрипт, надеюсь, вы сможете мне помочь лучше

Ответ №3:

Вы должны использовать .validate().form()

 if (!$("#myform").validate().form()) {
    return false; //doesn't validate
}else
{
    //form is validated do your work
}