Javascript 当datepicker处理程序位于iframe中时,KnockoutJS未捕获jQuery UI datepicker更改事件
我正在使用上面的代码,但我的datepicker处理程序位于iframe中。Javascript 当datepicker处理程序位于iframe中时,KnockoutJS未捕获jQuery UI datepicker更改事件,javascript,knockout.js,datepicker,Javascript,Knockout.js,Datepicker,我正在使用上面的代码,但我的datepicker处理程序位于iframe中。 问题是更改日期选择器上的日期后,ko.utils.registerEventHandler不会触发。如果您试图在有子iframe时触发并捕获事件,请尝试执行parent.document而不是window.parent,如answer 另外,如果您正在注册表句柄中使用parent.document,则事件的注册可能会发生在iframe中。您是否尝试在更新中添加事件委派,而不是在初始化中添加事件委派? 还可以将JQUER
问题是更改日期选择器上的日期后,
ko.utils.registerEventHandler
不会触发。如果您试图在有子iframe时触发并捕获事件,请尝试执行parent.document
而不是window.parent
,如answer
另外,如果您正在
注册表句柄中使用parent.document
,则事件的注册可能会发生在iframe中。您是否尝试在更新中添加事件委派,而不是在初始化中添加事件委派?
还可以将JQUERY函数直接用于处理程序
ko.bindingHandlers.iFramedatePicker =
{
init: function (element, valueAccessor, allBindingsAccessor, data, context)
{
window.parent.customer.datePickers.initDatePicker(element);
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
var ctrlValue;
if (typeof (observable()) == "string")
ctrlValue = $(element).val();
else
ctrlValue = window.parent.customer.datePickers.getDate(element);
observable(ctrlValue);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
window.parent.customer.datePickers.destroyDatePicker(element);
});
},
update: function (element, valueAccessor) {
var modelValue = ko.utils.unwrapObservable(valueAccessor());
if ((modelValue) && (modelValue != '')) {
var modelValue_Date = new Date(modelValue);
var controlValue = window.parent.customer.datePickers.getDate(element);
if (controlValue === null || controlValue.getTime() !== modelValue_Date.getTime())
window.parent.customer.datePickers.setDate(element, modelValue_Date);
}
}
};
你好,Madhurima。这个答案有用吗?
$(element).initDatePicker();