首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery验证隐藏kendo-ui控件

Jquery验证隐藏kendo-ui控件
EN

Stack Overflow用户
提问于 2013-05-19 18:08:12
回答 2查看 3.6K关注 0票数 7

我有一个使用kendo-ui numericTextBox的表单

代码语言:javascript
复制
@Html.LabelFor(p => p.Cost)
@Html.TextBoxFor(p => p.Cost, new { @autocomplete = "off" })

我绑定了它,然后,为了让它与jquery验证插件一起工作,我设置了以下设置:

代码语言:javascript
复制
$("#Cost").kendoNumericTextBox({
    format: "c",
    min: 0,
    decimals: 2
});

$.validator.setDefaults({
    ignore: [],
    highlight: function (element, errorClass) {
        element = $(element);
        if (element.hasClass("k-input")) {
            element.closest(".k-widget").addClass(errorClass);

        } else {
            element.addClass(errorClass);
        }
    },
    unhighlight: function (element, errorClass) {
        element = $(element);
        if (element.hasClass("k-input")) {
            element.closest(".k-widget").removeClass(errorClass);
        } else {
            element.removeClass(errorClass);
        }
    }
});

当我试图提交表单而Cost输入无效时,它会正确地添加errorClass (在.k-widget包装器上)。

问题是,如果我再次按下submit按钮,(使用style="display: none;") kendo-ui元素就会消失。

我不知道是什么触发了这一切。我已经看到,如果将errorClass更改为input-validation-error以外的其他值,则kendo-ui小部件仍然可见。

这个问题只发生在kendo-ui控件上,而不是标准的html输入上。

我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-23 04:25:48

我敢打赌,数字文本框控件是双div包装的,就像datepicker控件一样。下面是我在validator配置中使用的highlight()unhighlight()函数,用于确定要将error类应用于哪个元素:

代码语言:javascript
复制
...
highlight: function (element, errorClass, validClass) {
  var e = $(element),
      parent = _getParent(e);

    _addClass(e, parent);
  },
unhighlight: function (element, errorClass, validClass) {
  var e = $(element),
      parent = _getParent(e);

  _removeClass(e, parent);
}
...

function _getParent(element) {
  // a Kendo DatePicker is double-wrapped, so that requires us to return the parent of the parent
  return (element.parent().hasClass('k-picker-wrap')) ? element.parent().parent() : element.parent();
}

function _addClass (element, parent) {
  if (parent.hasClass('k-widget')) {
    parent.addClass('error');
  } else {
    element.addClass('error');
  }
}

function _removeClass(element, parent) {
  if (parent.hasClass('k-widget')) {
    parent.removeClass('error');
  } else {
    element.removeClass('error');
  }
}
票数 7
EN

Stack Overflow用户

发布于 2015-07-28 05:43:47

为了解决元素在第二次提交时消失的问题,我这样做了:

代码语言:javascript
复制
$("form").submit(function (event) {
  $(".k-widget").removeClass("input-validation-error");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16633498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档