基于正则表达式的我的(ko。)验证不适用于某些输入

时间:2013-06-11 07:15:38

标签: entity-framework knockout.js ef-code-first

我尝试为amount字段设置验证。我只允许数字字符。我选择使用正则表达式进行验证。

我的模型服务器端:

public class InvoiceLine
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    public double Amount { get; set; }
}

验证我的金额客户端的正则表达式:

invoiceLine.amount.extend({
    pattern: {
        message: 'warning!',
        params: '^[1-9]\d*$'
    }
});

然后在我看来:

<input type="text" data-bind="value: amount, valueUpdate: 'afterkeydown', validationOptions: { errorElementClass: 'input-validation-error' }" />

测试:

  • 123有效确认
  • azerty无效确定
  • 123abc 有效的NOK

在上面的测试中,当我说'有效/无效'时,我的意思是验证成功/失败,当我说'OK / NOK'时,我的意思是这个验证是我预期/不期望的。

所以第三次测试不是我的预期,我不知道为什么ko.validation不会将其标记为无效。似乎只要第一个字符是数字,无论接下来是什么,它都不会被标记为无效。

然后出于测试目的,我改变了我的模型服务器端:

public double Amountpublic string Amount,结果是:

  • 123有效确认
  • azerty无效确定
  • 123abc 无效确定

所以似乎string而不是double行为更好但是我需要一个double字段才能获得更多资源!

在为此字段保留double类型时,知道如何对我的金额进行完全满意的验证吗?

感谢。

0 个答案:

没有答案