Динамическая установка минимального значения в текстовом поле с помощью плагина Jquery Validate - PullRequest
3 голосов
/ 15 декабря 2010

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

$("#new_project").live("click", function() {

    switch($('input:radio[name=quality-level]:checked').val()){
        case 'average' : ppw = .006;
        case 'below-average' : ppw =.004;
        case 'good' : ppw = .008;
        case 'very-good' : ppw = .016;
    }

    if ($('#minimum-word-length').val() && $('input:radio[name=quality-level]:checked').val())
    {
        min_price = $('#minimum-word-length').val() * ppw;

    }

    $("#new_project, .edit_project").validate({
    rules: {
    ...
    "price-per-article": {required: true, number: true,  min:min_price},
    ...
    },
    errorPlacement: function(error, element) { }


    });

});

Минимальная цена установлена ​​правильно и корректно обновляется. Тем не менее, по какой-то причине правило минимального значения не обновляется, что, я думаю, потому, что проверочный код загружается только при загрузке документа. Итак, я думаю, есть ли способ перезагрузить правила, чтобы минимальное значение изменилось, когда два обязательных поля были заполнены?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 15 декабря 2010

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

Таким образом, для записи цены за статью это будет выглядеть примерно так:

"price-per-article": {
  required: true,
  number: true,
  min: function () { return $('#minimum-word-length').val() * ppw; }
}
1 голос
/ 15 декабря 2010

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

"price-per-article": {
    required: true,
    number: true,
    min: function() { return min_price; }
}

Таким образом, значение min_price проверяется каждый раз, когда вызывается проверка.

0 голосов
/ 27 мая 2015

Этот пример получает min год, а max год получается из min:

$(document).ready(function () {
    function getMinYear() {
        var d = new Date();
        var y = parseInt(d.getFullYear());

        console.log("Min: " + y);
        return y;
    }

    $("#frmAddCard").validate({
        rules : {
            year : {
                required : true,
                number: true,
                min: getMinYear(),
                max: getMinYear() + 10
            }
        },
        messages : {                
            year : {
                required : "Expiration Date: Please enter valid year (e.g. 2016)",
                number : "Expiration Date: Please enter valid year (e.g. 2016)",
                min : function (elem) {
                    var y = getMinYear();

                    return "Min: Please enter the value between " + y.toString() + " and " + (y + 10).toString();
                },
                max : function (elem) {
                    var y = getMinYear() + 10;

                    return "Max: Please enter the value between " + y.toString() + " and " + (y + 10).toString();
                }
            }
        },
        submitHandler : function (form) {
        },
        invalidHandler : function (event, validator) {              
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...