试图用jQuery单击asp:LinkBut​​ton

问题描述

|| 我正在寻找一种使用jQuery单击
<asp:LinkButton>
方法。我还使用了“ 1”,带有“是/否”选项,因此,如果用户单击“是”,则会触发一个JavaScript函数“ 2”,这将需要单击页面上的“保存”按钮,但它没有执行目前,仅显示警告框: 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>
带有JQUERY的JAVASCRIPT
<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处理程序。     

解决方法

在这种情况下,我只需要致电乔提到的“保存协会”。但是,为了将来参考,以下选择器应该会为您提供更好的结果。
$(\'[id$=butSaveAssociation]\').click();
如果您不使用母版页,Neals select也可以使用,但是我想您是因为您试图获取ClientID。     ,为什么不只调用SaveAssociation()?     ,尝试这个:
function ClickSaveButton() {
    $(\'#butSaveAssociation\').trigger(\'click\');
    alert(\'save button clicked.\');
}
    ,我遇到了类似的问题,已通过以下方法解决:
function clickButton(element)
{
    if (element !=null)
    {
        if (element.click)
        {
            //IE only
            element.click();
        }
        else
        {
            var evt = document.createEvent(\"MouseEvents\");
            evt.initMouseEvent(\"click\",true,window,false,null);
            element.dispatchEvent(evt);
        }
    }
    else
    {
        //oops..        
    }
}
这样称呼:
clickButton(document.getElementById(\'<%=butSaveAssociation.ClientID%>\'));
我不知道为什么jquery不能正常工作。 看起来应该没问题,但对我也不起作用:
$(\'#<%=butSaveAssociation.ClientID %>\').click();
这可能与宇宙辐射或潮汐有关。;-)