проверка формы jquery - PullRequest
       25

проверка формы jquery

1 голос
/ 21 марта 2012

Я использую следующий код для проверки формы.Код работает нормально.Вот код:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery(function(){
        jQuery("#type").validate({
            expression: "if (VAL != '0') return true; else return false;",
            message: "Please make a selection"
        });

        jQuery("#type2").validate({
            expression: "if (VAL != '0')   return true; else return false;",
            message: "Please make a selection"
        });
    });
</script>

Код для выпадающих списков:

<select name="type" id="type">
    <option value="0">Select an option</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>
<select name="type2" id="type2">
    <option value="0">Selet an option</option>
    <option value="0">Select an option</option>
    <option value="'1">Option 1</option>
    <option value="'2">Option 2</option>
    <option value="'3">Option 3</option>
</select>

Теперь мне нужно, чтобы проверка во втором раскрывающемся списке работала, только когда выбранный элемент в первом раскрывающемся спискеВ поле «Вариант 2» и для других выбранных параметров не будет проверки второго комбинированного окна.

jquery.validate.js:

(function (jQuery) {
    var ValidationErrors = new Array();
    jQuery.fn.validate = function (options) {
        options = jQuery.extend({
            expression: "return true;",
            message: "",
            error_class: "ValidationErrors",
            error_field_class: "ErrorField",
            live: true
        }, options);
        var SelfID = jQuery(this).attr("id");
        var unix_time = new Date();
        unix_time = parseInt(unix_time.getTime() / 1000);
        if (!jQuery(this).parents('form:first').attr("id")) {
            jQuery(this).parents('form:first').attr("id", "Form_" + unix_time);
        }
        var FormID = jQuery(this).parents('form:first').attr("id");
        if (!((typeof (ValidationErrors[FormID]) == 'object') && (ValidationErrors[FormID] instanceof Array))) {
            ValidationErrors[FormID] = new Array();
        }
        if (options['live']) {
            if (jQuery(this).find('input').length > 0) {
                jQuery(this).find('input').bind('blur', function () {
                    if (validate_field("#" + SelfID, options)) {
                        if (options.callback_success)
                            options.callback_success(this);
                    }
                    else {
                        if (options.callback_failure)
                            options.callback_failure(this);
                    }
                });
                jQuery(this).find('input').bind('focus keypress click', function () {
                    jQuery("#" + SelfID).next('.' + options['error_class']).remove();
                    jQuery("#" + SelfID).removeClass(options['error_field_class']);
                });
            }
            else {
                jQuery(this).bind('blur', function () {
                    validate_field(this);
                });
                jQuery(this).bind('focus keypress', function () {
                    jQuery(this).next('.' + options['error_class']).fadeOut("fast", function () {
                        jQuery(this).remove();
                    });
                    jQuery(this).removeClass(options['error_field_class']);
                });
            }
        }
        jQuery(this).parents("form").submit(function () {
            if (validate_field('#' + SelfID))
                return true;
            else
                return false;
        });
        function validate_field(id) {
            var self = jQuery(id).attr("id");
            var expression = 'function Validate(){' + options['expression'].replace(/VAL/g, 'jQuery(\'#' + self + '\').val()') + '} Validate()';
            var validation_state = eval(expression);
            if (!validation_state) {
                if (jQuery(id).next('.' + options['error_class']).length == 0) {
                    jQuery(id).after('<span class="' + options['error_class'] + '">' + options['message'] + '</span>');


                    jQuery(id).addClass(options['error_field_class']);
                }
                if (ValidationErrors[FormID].join("|").search(id) == -1)
                    ValidationErrors[FormID].push(id);
                return false;
            }
            else {
                for (var i = 0; i < ValidationErrors[FormID].length; i++) {
                    if (ValidationErrors[FormID][i] == id)
                        ValidationErrors[FormID].splice(i, 1);
                }
                return true;
            }
        }
    };
    jQuery.fn.validated = function (callback) {
        jQuery(this).each(function () {
            if (this.tagName == "FORM") {
                jQuery(this).submit(function () {
                    if (ValidationErrors[jQuery(this).attr("id")].length == 0)
                        callback();
                    return false;
                });
            }
        });
    };
})(jQuery);

Есть идеи?

Ответы [ 4 ]

0 голосов
/ 23 марта 2012

Наконец-то я нашел простые решения для моей проблемы.

вот оно:

jQuery("#type2").validate({
expression: "if ((jQuery('#type1').val() == '2') && VAL == '0')   return false; else return true;",
            message: "Please make a selection"
        });
0 голосов
/ 22 марта 2012

Вы можете создать собственное правило для этого. В этом пользовательском правиле вы должны проверить, является ли значение второго выпадающего меню параметром 2. Если это так, показать сообщение, иначе показать пустое сообщение.

Вы можете проверить создание пользовательского правила в сообщении SO jQuery Validate Plugin - Как создать простое пользовательское правило?

0 голосов
/ 23 марта 2012

Я пробую предложение, данное в этом посте

Пользовательская проверка jQuery .addMethod вопрос

надеюсь, это будет работать для меня

0 голосов
/ 21 марта 2012

Вы должны добавить пользовательскую функцию на основе выбранного значения опции выбора

$('select.foo option:selected').val();    // get the value from a dropdown select
$('select.foo').val(); 

http://api.jquery.com/val/

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