DevExpress文本框验证无法按预期工作

时间:2018-02-22 14:36:53

标签: c# asp.net devexpress

我有一个文本框,其中包含以下要求:

  1. 可以为空
  2. 如果不是空,则必须是9个数字
  3. 我想这样,只要你在文本框中输入一个字符就会出现一条消息,说明这是无效的,只要验证在用户输入时没有通过,该消息将保持可见而不会消失进入盒子。例如,我在框中键入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();
    

1 个答案:

答案 0 :(得分:0)

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

  

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

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