繁体   English   中英

DevExpress文本框验证无法正常工作

[英]DevExpress textbox validation not working as desired

我有一个文本框,其具有以下要求:

  1. 可以为空
  2. 如果不为空,则必须正好是9个数字

我希望这样,只要您在文本框中输入一个字符,就会出现一条消息,指出该消息无效,并且即使用户在框中键入内容而未通过验证,该消息也将保持可见而不会消失。 例如,我在框中键入1并立即出现错误,然后在键入2345678时,即使失去对编辑器的关注,该消息仍然保持可见。 然后,一旦我加9,消息就会消失。 我已经有了验证的工作逻辑,但似乎无法让事件触发我想要的方式。 例如,如果我开始在该字段中输入错误,该错误将消失,直到失去焦点,然后重新出现。 我如何保持输入状态?

Html.DevExpress().TextBox(tb =>
{
    tb.Name = "tbAddressChangeDUNS";
    tb.Width = Unit.Percentage(100);
    tb.Properties.ClientSideEvents.KeyUp = "function(s, e) {s.Validate();}";
    tb.Properties.ClientSideEvents.LostFocus = "function(s, e) {s.Validate();}";
    tb.Properties.ClientSideEvents.Validation = @"function(s, e) {
            var duns = e.value;
            if(!duns)
                return;
            if(!IsValidDunsNumber(duns)) {
                e.isValid = false;
                e.errorText = 'Must be exactly 9 digits';
            }
        }";
}).Render();

根据我的评论,下面有一个大提示可以解决您的问题:

您可以随时通过ASPxClientEdit.Validate方法手动触发验证。 处理文本框编辑器的[ASPxClientTextEdit.TextChanged] [1]事件 ,以在其文本更改时执行自定义逻辑(例如,触发验证)。 希望这些信息对您有所帮助。

来源: https : //www.devexpress.com/Support/Center/Question/Details/Q572171/how-to-implement-custom-validation-on-text-boxes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM