使用ko.observable进行多个电子邮件验证

时间:2013-10-25 09:34:41

标签: regex validation knockout.js durandal email-validation

我是durandal申请的新手。目前我正在尝试验证来自文本区域的多个电子邮件。

<textarea class="fullWidth" id="AddEmailSeparatedByComma"  rows="3" 
data-bind="value:emailList"></textarea>

我已经用“,”分隔了多个电子邮件,我正在存储

emailList = ko.observable("").extend({
 email: { message: "Please enter valid email address", params: true } 
});

我已提供上述验证消息。目前它只验证一封电子邮件,我不知道如何在这里使用自定义正则表达式来验证由逗号分隔的多个电子邮件。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:6)

添加另一个验证规则:

ko.validation.rules['emaillist'] = {
    validator: function (val, validate) {
        if (!validate) return true;
        if (ko.validation.utils.isEmptyVal(val)) return true;

        var emailrule = ko.validation.rules['email'];

        var vals = val.split(/\s*,\s*/);
        for (var i = 0; i < vals.length; i++) {
            if (!emailrule.validator(vals[i], true)) {
                return false;
            }
        }

        return true;
    },
    message: 'Please enter proper comma-separated email addresses'
};
ko.validation.addExtender('emaillist');

Fiddle