0

我很难在 VB6 胖客户端(使用 Web 浏览器控件)内的 ASP.NET MVC 4 Web 应用程序的隐藏按钮控件上捕获以编程方式触发的单击事件。我可以使用以下方法捕获点击事件本身:

Private WithEvents WebDoc As HTMLDocument

Private Function WebDoc_onclick() As Boolean  

    Select Case WebDoc.activeElement.iD    
       Case "A"
         Do something

        Case "C"
          Do something else

    End Select

    WebDoc_onclick = True

End Function

如果控件可见,这很好用。但如果控件不可见:

<div class="HideBtnDiv">
   <input id="C" name="NoItems" type="button" class="BtnDiv" style="display:none"/>
</div>

我尝试通过以下方式之一触发程序化点击:

    $("#C").('click');

    $("#C").trigger('click');

    $("#C").triggerhandler("click");

    $("#C").focus();
    $("#C").trigger('click');

我得到“id”属性的空字符串,因此我无法区分单击了哪个按钮。这个按钮除了向 VB6 应用程序表明已经满足某个标准之外没有其他用途,这就是我需要隐藏它的原因。有谁知道为什么 id 被剥夺了?或者有没有其他方式可以与客户沟通?

我也尝试过使用元素样式过滤

Select Case WebDoc.activeElement.Style

    Case "display:none"
        Do something else

End Select

但它以“[Object]”的形式返回,所以那里也没有运气。如果有办法解决这个问题,请告诉我。

谢谢,立津

4

2 回答 2

0

您似乎尝试了几种动态触发点击事件的方法,但您是否尝试过最明显的方法:

$("#C").click();

???

但这是我会做的:

display:none1-通过从样式中删除“”使所有按钮可见

2-将要隐藏的按钮包装在新的 DIV 中

3-display:none在新创建的DIV中设置“”样式

.click()4-即使通过调用不可见,您也可以触发任何按钮的事件$(id).click();

于 2013-04-01T04:11:28.047 回答
0

谢谢,艾哈迈德。实际上我的意思是 .click() 不是 .('click')。对于那个很抱歉。

无论如何,我尝试了您的建议并使按钮可见并将包装 div 的样式设置为 display:none 但 id 属性仍然作为空字符串出现。

但是,我确实想出了另一种方法来让它发挥作用。如果我保持包装 div 和按钮可见,然后在满足条件时聚焦并单击,然后执行 hide(),我的问题就解决了!

$("#C").focus();
$("#C").trigger('click');

$("#C").hide();

该按钮没有显示,VB6 仍然在点击事件上传递 id。奇怪的是它仍然需要进行 focus() 调用。没有它,我又回到了原点。不确定这是否是一个错误。

于 2013-04-01T17:29:55.227 回答