使用jquery ui datepicker的Knockout.js可以在IE以外的任何地方使用
我使用knockout.js templatescript创建了一个可以复制和删除的表单。 小提琴可以在这里找到。
我使用SE的litle帮助编写脚本以添加jquery-ui datepicker。 小提琴的简短版本可以在[这里] [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"); }); } };
现在我们也在这里。 单击框外单击时,日期选择器不会关闭。 这在任何浏览器中都会发生
其他问题
-
我使用这个(和许多其他人)来自动更正字段。 在这种情况下输入大写。 这在第一种forms上非常有效。 但不是任何重复的表格。
$(“。hoofdletters”)。keyup(function(e){$(“。hoofdletters”)。val(($(“。hoofdletters”)。val())。toUpperCase());});
-
当我使用uniqueName:true时,每个字段(也是重复的表单)都将得到validation。 但是我的$ _POST名称都被重命名了。 我想要originall字段名称,例如year []而不是ko_unique_1。 删除uniqueName时有效,但重复的表单不再validation。
[2]: http : //jsfiddle.net/QUxyy/5/
enter code here
- 要使代码在IE上运行:删除“console.log”指令
-
要更改日期格式,您可以定义类似这样的绑定:
data-bind =’datepicker:beschikkingsdatum,datepickerOptions :{dateFormat:“dd / mm / yy”} ,uniqueName:true’
2件事:
就像我在评论中所说的,使用window.console.log(或包装函数)而不是console.log来防止不知道控制台对象的旧浏览器出错。
我使用这个(和许多其他人)来自动更正字段。 在这种情况下输入大写。 这在第一种forms上非常有效。 但不是任何重复的表格。
更换:
$(".hoofdletters").keyup(function(e) { $(".hoofdletters").val(($(".hoofdletters").val()).toUpperCase()); });
用:
$(".hoofdletters").on('keyup', '#', function(e) { $(".hoofdletters").val(($(".hoofdletters").val()).toUpperCase()); });
这样你可以保证将来的元素接收keyup处理程序需要root元素来限制on函数的DOM监视范围。 理想情况下,这将是一个DIV
元素