Нажмите кнопку ASP.NET из события диалогового окна jQuery - PullRequest
2 голосов
/ 28 июля 2010

У меня есть следующая разметка 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?

<ч />

EDIT

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

... работает, но разве это лучшее решение?

Ответы [ 2 ]

5 голосов
/ 28 июля 2010
$("#<%=btnSave.ClientID %>").click();
4 голосов
/ 28 июля 2010

Вы можете использовать свойство btnSave.ClientId, чтобы передать в javascript идентификатор искомого элемента управления, затем вы можете сделать что-то вроде этого.Это если вы хотите, чтобы элемент управления btnSave регистрировался как элемент управления обратной передачей, вызывая событие «Click» в коде позади.

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

Это будет сделано!

Если вы хотитесделать простую обратную передачу, которую вы можете сделать

this.document.form.submit();

, но это НЕ будет регистрировать какие-либо события для кнопки.

Is Best Best?

Для.NET 3.5 и более ранние версии - это единственный «по-настоящему» безопасный способ получения идентификатора клиента.С помощью jQuery вы можете выполнить частичное совпадение идентификатора в _btnSave, но я считаю, что это слишком рискованно для будущих модификаций.

.NET 4.0 действительно предоставляет опцию, которая может помочь.

Свойство .NET 4.0 ClientIDMode

В .NET 4.0 у вас есть необязательное свойство ClientIDMode , которое позволит вам выбрать способ создания идентификатора клиента.Вы можете использовать параметры Predictable или Static, чтобы жестко закодировать идентификатор кнопки в свой JavaScript.

...