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

Pan*_*ool 2 regex validation email-validation knockout.js durandal

我是durandal应用程序的新手.目前我正在尝试验证来自文本区域的多个电子邮件.

<textarea class="fullWidth" id="AddEmailSeparatedByComma"  rows="3" 
data-bind="value:emailList"></textarea>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*rot 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');
Run Code Online (Sandbox Code Playgroud)

小提琴