0

我添加了淘汰赛验证,但它似乎将我放入该字段的所有内容都扔了:a、1、?等——唯一有效的方法是让该字段为空。我正在使用 ko 验证库,并通过使用模式规则对其进行扩展。

ko 模板:

<script type="text/html" id="solutionRowTemplate">
                    <tr>
                        <td>
                            <input type="text" class="whole" data-bind="value: firstWhole, valueUpdate: 'afterkeydown'" />
                        </td>
</tr>
</script>

ko 视图模型:

<script type="text/javascript">
    var solutionData = @Html.Raw(new JavaScriptSerializer().Serialize(Model.SolutionList));

    function SolutionModel(firstWhole) {
        this.firstWhole = ko.observable(firstWhole);
    }

    var viewModel = {
        solutions: ko.observableArray(ko.utils.arrayMap(solutionData, function (item) {
            var model = new SolutionModel(item.FirstWhole);
            model.firstWhole.extend({ pattern: '^[a-z0-9].$' });
            return model;
        })),
        addSolution: function () {
            this.solutions.push(new SolutionModel('', '', '', '', '', '', '', '', '', '', '', ''));
        },
    };

    ko.applyBindings(viewModel);
</script>

如果我添加扩展的方式有误,也不会感到惊讶...

谢谢,-罗布

4

1 回答 1

1

它应该工作。但是你尝试过的价值观 - 不是。'a''1'并且'?'不是模式的有效值'^[a-z0-9].$'。对于此模式,只有第一个符号为字母 (az) 或数字且第二个符号为 any 的值才有效。例如:'1a', 'b#', 'Ab'

于 2012-10-10T13:40:47.920 回答