Javascript 当datepicker处理程序位于iframe中时,KnockoutJS未捕获jQuery UI datepicker更改事件

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

我正在使用上面的代码,但我的datepicker处理程序位于iframe中。
问题是更改日期选择器上的日期后,
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();