我使用了一个 knockout.js 模板脚本来创建一个可以复制和删除的表单。小提琴可以在这里找到。
我在 SE 的帮助下编辑了脚本以添加 jquery-ui 日期选择器。可以在 [这里][2] 找到小提琴的简短版本。到目前为止一切都很好,但是在测试时我发现除了 IExplorer(各种版本)之外,一切都可以在任何浏览器中运行。
问题出在这个特定的部分,但我不知道在哪里。
script type='text/javascript'>//<![CDATA[
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepickerOptions || {};
console.log("datepicker");
$(element).datepicker(options);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
observable($(element).datepicker("getDate"));
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).datepicker("destroy");
});
}
};
现在我们也开始了。当您在框外单击时,日期选择器不会关闭。这发生在任何浏览器中。
附加问题
我用这个(和许多其他的)来自动更正一个字段。在这种情况下,输入大写。这在第一种形式上效果很好。但不是在任何重复的表格上。
$(".hoofdletters").keyup(function(e) { $(".hoofdletters").val(($(".hoofdletters").val()).toUpperCase()); });
当我使用 uniqueName: true 时,每个字段(也是重复的表单)都将得到验证。但是我的 $_POST 名称都被重命名了。我想要原始字段名称,例如 year[] 而不是 ko_unique_1。删除 uniqueName 时有效,但重复的表单不再有效。
[2]:http: //jsfiddle.net/QUxyy/5/
enter code here