客户端范围动态验证

时间:2014-05-30 08:36:50

标签: javascript jquery model-view-controller unobtrusive-validation

我有一个字段“Width”,我只知道运行时允许的范围。

如何在范围之间添加客户端验证。

如果需要,我可以将max和min作为隐藏字段传递?

我应该使用jquery将这些属性添加到输入字段吗?:data-val-range-min="1" data-val-range-max="10" data-val-range="message"

(仅供参考我使用流利验证框架)

2 个答案:

答案 0 :(得分:0)

我看到您正在使用JQuery(标记),因此您可以按如下方式进行验证:

有关工作示例,请参阅:http://jsfiddle.net/f9KS3/

$(function() {

    $('input').each(function() {
        var $me = $(this);

        var min = $me.attr('data-val-range-min');
        var max = $me.attr('data-val-range-max');
        var message = $me.attr('data-val-range');

        $me.blur(function() {
            var val = parseInt($me.val());

            if(!$.isNumeric(val) || val < min || val > max) {
                alert('Error (' + message + ')! Field value must be numeric and between ' + min + ' and ' + max);
            }
        });

    });

});

如果您想在运行时更改范围,只需将minmaxmessage变量移动到模糊函数中并更改data-val-* - 使用JQuery fe的属性并且验证将按预期工作。

答案 1 :(得分:0)

您需要的是使用属性

data-val-range = "message"
data-val-range-max = maxValue
data-val-range-min = minValue

然后,如果要更改范围,请在脚本中执行此操作:

      $("#" + paramID).attr('data-val-range-max', max)
      $("#" + paramID).attr('data-val-range-min', min)
      $.validator.unobtrusive.parse(document); <--------

“&lt; ----”这允许您使用新值动态应用验证