使用javascript在ascx布局模板中禁用asp按钮

时间:2015-04-24 14:48:38

标签: javascript asp.net

我正在尝试使用javascript / jquery在单击复选框时禁用按钮,但是我很难过。

<asp:ListView runat="server" ID="lvApplicationForms" OnItemCommand="lvAttachedDocuments_OnItemCommand"
            DataKeyNames="FormID" OnPreRender="lvApplicationForms_PreRender" OnItemDataBound="lvApplicationForms_ItemDataBound">
            <LayoutTemplate>
                <table class="formData_tb" style="margin-top: 0px" cellspacing="0px" width="590px">

                    <asp:PlaceHolder ID="itemplaceholder" runat="server" />
                    <tr style="background-color: #dedede">
                        <td class="fieldData_td"></td>
                        <td class="fieldName_td" colspan="2">All Documents
                        </td>
                        <td class="fieldData_td" style="text-align: center">
                            <asp:CheckBox ID="cbSignAll" runat="server" Text="" onclick="javascript:return CheckedChange(this)" />
                        </td>
                        <td class="fieldData_td" style="text-align: center">
                            <asp:CheckBox ID="cbExposeAll" runat="server" Text="" onclick="javascript:return CheckedChange(this)" />
                        </td>
                        <td class="fieldData_td" colspan="3" style="text-align: right">
                            <asp:Button ID="btnSaveChanges" runat="server" Text="Save" Style="width: 80px;" CssClass="formButton"
                                OnClick="btnSaveChanges_Click" OnClientClick="EnableUploadValidators(false)" />
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>

出于测试目的,我有一个javascript函数,当选中复选框(ID&#39; s:cbSignAll,cbExposeAll)时会触发该函数。 javascript需要禁用保存按钮(ID:btnSaveChanges)。

我能够启动javascript功能,但我似乎无法抓住按钮的属性来禁用它。

使用Javascript:

function CheckedChange(objCheckBox) {
    $('.btnSaveChanges').attr('disabled', 'disabled');
}

2 个答案:

答案 0 :(得分:1)

ASP在ID的开头修改元素的ID并预先形成表单和其他数据,在这种情况下,它还在末尾添加元素的索引。 (使用开发工具查看)

您可以使用通配符选择器来获取所需的元素:

$("[id*=btnSaveChanges]").attr("disabled", true);

答案 1 :(得分:0)

从jQuery 1.9开始,你应该在编辑disabled属性时使用prop()。

function CheckedChange(objCheckBox) {
    $('#btnSaveChanges').prop('disabled', true);
}

正如其他答案中所述,asp子控件可以修改其id,除非你声明ClientIDMode =&#34; Static&#34;对于页面,所以你需要确保id正确或将选择器改为@Tomislav Muic的答案中所示的类似选择器。