2

我有以下 ASP.NET 标记:

<div id="myForm" title="My Form" style="display: none">
    <span>You can see me!</span>
    <div style="display: none">
        <asp:Button ID="btnSave" runat="server" Text="Button"
            OnClick="btnSave_Click" />
    </div>
</div>

<!-- called by an element click event elsewhere -->
<script type="text/javascript" language="javascript">
    $("#myForm").dialog({
        modal: true,
        width: 500,
        height: 200,
        resizable: false,
        buttons: {
            "Cancel": function () {
                $(this).dialog("close");
            },
            "Save": function () {
                $(this).dialog("close");
                // I want to call btnSave_Click (by DOM-clicking the button?)
            }
        }
    });
    $("#myForm").parent().appendTo("form:first");
</script>

我试图让 jQuery.dialog 生成的按钮代替 ASP.NET 按钮执行回发。我应该怎么做才能使按钮进行提交并调用该btnSave_Click方法?


编辑

"Save": function () {
    $(this).dialog("close");
    document.getElementById("<%=btnSave.ClientID %>").click();
}

...有效,但这是最好的解决方案吗?

4

2 回答 2

5
$("#<%=btnSave.ClientID %>").click();
于 2010-07-28T15:38:45.000 回答
4

您可以使用 btnSave.ClientId 属性向 javascript 发出您正在查找的控件的 ID,然后您可以执行类似的操作。这是如果您希望 btnSave 控件注册为回发控件,在后面的代码中触发“Click”事件。

var myControl = document.getElementById('theclientidgoeshere')
myControl.click();

那会做到的!

如果你想做一个简单的回发,你可以做

this.document.form.submit();

但这不会为按钮注册任何事件。

这是最好的吗?

对于 .NET 3.5 和更早版本,这是获取客户端 ID 的唯一“真正”安全的方法。使用 jQuery,您可以在 _btnSave 上进行部分 id 匹配,但我发现这对于未来的修改来说风险太大。

.NET 4.0 确实引入了一个可能有帮助的选项。

.NET 4.0 ClientIDMode 属性

在 .NET 4.0 中,您有一个可选的ClientIDMode属性,允许您选择如何创建客户端 ID。您可以使用 Predictable 或 Static 选项将按钮的 id 硬编码到 JavaScript 中。

于 2010-07-28T15:31:42.457 回答