【问题标题】:data-val-required not working, unless some other validator starts workingdata-val-required 不工作,除非其他验证器开始工作
【发布时间】:2015-08-07 13:59:50
【问题描述】:

我有一个带有必填字段验证器和其他自定义验证适配器的 INPUT 字段,

 @Html.TextBoxFor(t => t.SomeClass.Name, new
                {

                    data_val = "true",
                    data_val_required = "Required Field Message",
                    data_val_customvalidator1 = "Message1",
                    data_val_customvalidator2 = "Message2",
                })

我遇到的问题是,必填字段验证器不工作,除非任何其他验证器工作

场景:-

步骤 1:用户输入 1234,从字段中跳出标签并验证字段 第 2 步:选择在上述字段中输入的数据,然后按删除 第 3 步:必填字段验证器不起作用

但是当用户返回填充数据并已验证的字段并开始一次删除一个字符时,该字段的其他自定义验证器开始工作并使该字段无效

现在,如果用户输入了正确的数据并且 tabs out 字段得到验证,但是现在当用户像上面的步骤 2 那样完全删除数据时,所需的字段验证开始工作!!!

所以我无法理解为什么必填字段验证器不起作用,直到其他一些验证器起作用。

【问题讨论】:

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


    【解决方案1】:

    我可以通过添加一行代码来解决这个问题

    jQuery.validator.setDefaults({
                        onfocusout: function(element) {
                            $(element).valid();
                        }); 
    

    【讨论】:

    • 不,它不起作用。请看一下:jsfiddle.net/y4aoq8mr 如果更准确地说 - 在您输入一些值然后删除它后它开始工作。但从一开始它就不会触发验证错误。而且我还没有找到这个bug的解决方案
    【解决方案2】:

    可能有点矫枉过正,但这就是我的情况(我放弃让 validate 方法工作 - submitHandler 和所有其余的对我都不起作用):

    $(document).ready(function () {
        $(':input[data-val]').bind('propertychange change click keyup input paste', function () {
            var $element = $(this);
            if ($element.valid()) {
                unhilightErrors($element);
            }
            else {
                hilightErrors($element);
            }
        });
        $('form').on('submit', function (e) {
            e.preventDefault();
            var $form = $(this);
            if ($form.valid()) {
                var $button = $form.find(':submit');
                var loadingDelay = setTimeout(function () {
                    $button.button('loading');
                }, 100);
                var formValues = $form.serialize();
                $.post($button.data('local-ajax'), formValues, function () {
                    clearTimeout(loadingDelay);
                    window.location.reload();
                });
            }
            else {
                hilightErrors();
            }
        });
        function hilightErrors($selector = undefined) {
            if ($selector && $selector.is(':input')) {
                $selector.addClass('alert-danger').removeClass('input-validation-error');
            }
            else {
                $(':input.input-validation-error').addClass('alert-danger').removeClass('input-validation-error');
                $(':input.field-validation-error').addClass('alert-danger').removeClass('field-validation-error');
            }
        }
        function unhilightErrors($selector = undefined) {
            if (!$selector) {
                $selector = $(':input.alert-danger[data-val]');
            }
            $selector.removeClass('alert-danger');
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      相关资源
      最近更新 更多