尝试使用jQuery单击asp:LinkBut​​ton

时间:2011-05-25 16:02:28

标签: javascript jquery asp.net ajax click

我正在寻找一种使用jQuery单击<asp:LinkButton>的方法。我也使用了<asp:ModalPopupExtender>,带有“是/否”选项,因此如果用户点击“是”,则会触发javascript函数OnOk(),该函数必须单击页面上的“保存”按钮,但它现在没有做任何事情,只是显示警告框:

ASP.NET AJAX

<asp:LinkButton ID="butSaveAssociation" runat="server" OnClientClick="SaveAssociation();" Text="btnSave" />

<asp:ModalPopupExtender BehaviorID="confirmPopup" ID="confirmPopup" runat="server" TargetControlID="butTest" 
    PopupControlID="ConfirmView"  OnOkScript="OnOk();" OnCancelScript="$find('confirmPopup').hide(); return false;" OkControlID="yesButton" CancelControlID="noButton" />

<asp:Panel ID="ConfirmView" runat="server" CssClass="modalPopup" Style="display:none; height:150px; width:250px;">
    <center><div>
        <table style="margin-left:auto; margin-right:auto;">
            <tr>
                <td colspan="4" align="left" style="padding-left: 75px; padding-top: 10px;">
                    Are you sure you want to save the changes?
                </td>
            </tr>
            <br /><br />
            <tr>
                <td align="left" colspan="1">
                    <asp:LinkButton ID="yesButton" runat="server" CausesValidation="false" CssClass="YesNoButton" BorderStyle="none" Text="YES">
                    </asp:LinkButton>
                </td>
                <td align="right" colspan="1">
                    <asp:LinkButton ID="noButton" runat="server" CausesValidation="false" CssClass="YesNoButton" BorderStyle="none" Text="NO">
                    </asp:LinkButton>
                </td>
            </tr>
        </table>
    </div></center>
</asp:Panel>

JAVASCRIPT W / JQUERY

<script src="~/Scripts/jquery-1.6.1.min.js"></script>

<script type="text/javascript">

    function OnOk() {
        ClickSaveButton();
    }

    function ClickSaveButton() {
        $('#<%=butSaveAssociation.ClientID %>').click()  // not working...
        alert('save button clicked.');
    }
</script>

修改

'SaveAssociation()'函数只是更改一个标志,因此它不执行实际的保存:

<script type="text/javascript">
    function SaveAssociation() {
        setDirty(false);
    }

    function setDirty(changeVal) {
        $("#IsDirty").val(changeVal);
    }
</script>

<input type="hidden" id="IsDirty" value="" />

此功能只是检查页面上是否有更改,如果有更改,“IsDirty”隐藏字段将设置为true。如果用户单击“确定”以保存更改,我需要调用处理'butSaveAssociation.Click'的VB处理程序,如回发。

4 个答案:

答案 0 :(得分:2)

为什么不直接调用SaveAssociation()?

答案 1 :(得分:1)

在这种情况下,我会像Joe提到的那样调用Save Association。但是,为了将来参考,以下选择器应该会给您带来更好的结果。

$('[id$=butSaveAssociation]').click();
如果您没有使用母版页,

Neals select也会有效,但我认为您是在尝试获取ClientID。

答案 2 :(得分:0)

试试这个:

function ClickSaveButton() {
    $('#butSaveAssociation').trigger('click');
    alert('save button clicked.');
}

答案 3 :(得分:0)

我遇到了类似的问题,我已经解决了以下问题:

function clickButton(element)
{
    if (element !=null)
    {
        if (element.click)
        {
            //IE only
            element.click();
        }
        else
        {
            var evt = document.createEvent("MouseEvents");
            evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            element.dispatchEvent(evt);
        }
    }
    else
    {
        //oops..        
    }
}

这样称呼:

clickButton(document.getElementById('<%=butSaveAssociation.ClientID%>'));

我不知道为什么jquery不起作用。

这看起来应该很好,但对我来说也不起作用:

$('#<%=butSaveAssociation.ClientID %>').click();

它可能与宇宙辐射或潮汐有关。; - )