【问题标题】:Any way to fire a VB.NET button from Javascript?有什么方法可以从 Javascript 中触发 VB.NET 按钮?
【发布时间】:2011-05-27 20:38:41
【问题描述】:

我的 aspx 页面上有一个菜单,看起来很漂亮。这正是我需要的(找到它here)。

我遇到的问题是:我需要(以某种方式)从 javascript 启动按钮控件。我意识到在示例中,菜单项只是 href 链接,但我想知道如何进行回发并启动 Button1_OnClick 事件。

有什么想法吗?

谢谢, 杰森

请注意 Button1 是一个 ASP 按钮,后面有服务器端 VB.NET 代码

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    你需要类似的东西

     __doPostBack(*Button1's clientId*,"OnClick") ;
    

    【讨论】:

    • 我建议使用 ASP.NET 函数来生成 __doPostBack 代码。但是,这应该适用于所有浏览器(使用 JavaScript)。
    • 即使用Page.ClientScript 得到ClientScriptManager 并使用GetPostBackEventReference 生成__doPostBack 的东西。 +1 不使用click()
    【解决方案2】:

    Button1 将有一个名为“ClientID”的属性。您可以将其回显到 HTML 代码中以通过 document.getElementById("<%= Button1.ClientID %>") 获取对象,然后您只需像往常一样调用单击即可。

    所以:

    document.getElementById("<%= Button1.ClientID %>").click();
    

    正如评论员所指出的,.click() 方法不适用于所有浏览器。这是在 JavaScript 中单击按钮的另一种方法(也应与链接一起使用):

    // Where 'button' is the value of the document.getElementById() function:
    if (button.dispatchEvent) {
        var e = document.createEvent(“MouseEvents”);
        e.initEvent(“click”, true, true);
        button.dispatchEvent(e);
    }
    else {
        button.click();
    }
    

    【讨论】:

    • 感谢您指出这一点。我相应地编辑了我的回复。
    • 似乎找不到我的按钮的“ClientID”。这是一个标准的 ASP 按钮,其 ID 设置为“PrintBatch”。看起来像这样:
    • 所以我想我正在搜索 getElementByID("")
    • @Jason ClientID 是 ASP.NET 控件的一个属性——它是一个有趣的长字符串,相当于 DOM 中的 actual ID,这不是ASP.NET 控件的“ID”设置为! (我认为 ASP.NET 4 允许对此进行更改?在任何情况下......控件也必须渲染 - 例如可见 - 以便使用 ClientID。)
    • 尝试了以下方法,但没有成功:function PrintBatchJS() { document.getElementById("").click();}
    【解决方案3】:

    任何&lt;a&gt; 元素的click() 方法模拟点击。

    【讨论】:

    • 这并没有解决问题。问题是他不知道如何从 ASP.NET 引用按钮本身。这是因为 ASP.NET 按钮位于服务器端,而客户端的反映并不完全相同。
    • @Helgi 回发将“知道”按钮。
    • @pst:他仍然需要从 JavaScript 中识别按钮本身。在单击按钮之前没有回发,并且 OP 被困在如何从 JavaScript 中单击它。
    • 这就是我所拥有的:打印
    • function PrintBatchJS() { document.getElementById("").click();}
    【解决方案4】:

    您可以创建&lt;a /&gt; 链接,LinkBut​​tons。您可以选择保留您的 &lt;a /&gt; 链接并将 runat="server" 放在它们上面,这样就可以做到这一点,而无需触发单独的按钮点击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多