gpt4 book ai didi

javascript - 从 C++ IHTMLInputElement 触发 onChange 事件

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:03 25 4
gpt4 key购买 nike

我在 MFC 应用程序的 CDialog 中加载了一个 html 页面,使用 IE8 引擎和 CDHtmlDialog 的一个实例。 html 页面包含 <input>元素,并包括 jQuery。在上述 jQuery 中,我有这段代码:

$(function()
{$
$('#Left').change(function()
{
$('[id$=left]').prop('disabled', ! $(this).is(':checked') );
}).change();
});

这基本上只是根据带有 id #Left 的复选框禁用或启用一些输入和选择(按 id 约定选择) .

问题是:当我像这样从 C++ 代码更改复选框时:

// Get pElements checkbox through doc->getElementsByTagName("input")
CComQIPtr<IHTMLInputElement> spInputElement(pElement);
spInputElement->put_checked(true);

然后更改事件不会触发(可能是为了避免无限递归),并且其他输入永远不会更新。有没有一种方法可以从我的 C++ 中显式触发更改事件?我倾向于不要求所有复选框都具有特定的 html 代码(例如显式的 onchange="..."),因为这对于维护而言是不切实际的。

最佳答案

在 IE8 中,事件是用 IHTCDefaultDispatch::createEventObject 创建的并用 IHTMLElement3::fireEvent 解雇.

对于 IE9,事件使用 IDocumentEvent::createEvent 创建并使用 IEventTarget::dispatchEvent 触发。

关于javascript - 从 C++ IHTMLInputElement 触发 onChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com