除非选中下拉框中的某个选项,否则应禁用文本框

时间:2016-09-20 05:35:59

标签: javascript asp.net webforms disabled-input

这是我的JavaScript代码:它无效

<script language="javascript" type="text/javascript">

    function ShowExpenseReport(Expense_Report_ID) {
        var width = screen.width;  
        var leftpad = (width - 740) / 2;
        var jsoption = "width=740,height=700,resizable=no,scrollbars=yes,toolbar=no,titlebar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no,left=" + leftpad + ",top=10";

        window.open("Documents/ExpenseReport.aspx?Expense_Report_ID=" + Expense_Report_ID, 'win02', jsoption);
        return false;
    }

    function changetextbox() {
        if (document.getElementById("ddlItem").value == '3') {
            document.getElementById("txtPurpose").disabled = 'true';
        } else {
            document.getElementById("txtPurpose").disabled = '';
        }
    }
</script>

以下是HTML方面:

<asp:TemplateField HeaderStyle-CssClass="innerGridHeader" ItemStyle-CssClass="itemPadding"
    ItemStyle-Width="150px" HeaderStyle-VerticalAlign="Top" FooterStyle-VerticalAlign="Top">
    <HeaderTemplate>
        Item
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Label ID="lblItem" Visible="false" runat="server" Text='<%#Eval("Item_Description") %>'></asp:Label>
        <asp:Label ID="lblItemID" Visible="false" runat="server" Text='<%#Eval("Item_ID") %>'></asp:Label>
        <asp:DropDownList ID="ddlItem" Width="140px" runat="server"  onChange="changetextbox()"  CssClass="combobox">
        </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderStyle-CssClass="innerGridHeader" ItemStyle-CssClass="itemPadding"
    ItemStyle-Width="260px" HeaderStyle-VerticalAlign="Top" FooterStyle-VerticalAlign="Top">
    <HeaderTemplate>
        Purpose
    </HeaderTemplate>
    <ItemTemplate>
        <asp:Label ID="lblPurpose" runat="server" Width="240px" Text='<%#Eval("Purpose") %>'></asp:Label>
        <asp:TextBox ID="txtPurpose" runat="server" Width="240px" CssClass="inputbox" Text='<%#Eval("Purpose") %>'></asp:TextBox>
        <asp:RequiredFieldValidator ID="rfvPurpose" runat="server" ErrorMessage="Enter Purpose"
            ControlToValidate="txtPurpose" Display="None" ValidationGroup="NER" SetFocusOnError="True">
        </asp:RequiredFieldValidator>

        <asp:ValidatorCalloutExtender ID="vcePurpose" runat="server" TargetControlID="rfvPurpose"
            PopupPosition="BottomRight" WarningIconImageUrl="~/Library/Images/exclamation.png" />
    </ItemTemplate>
</asp:TemplateField>

我只想在用户从数据库中值为3的下拉列表中选择娱乐时禁用文本框。

1 个答案:

答案 0 :(得分:0)

我相信您要做的是根据选择值禁用/启用文本框字段。 ASP中遵循的正确方法如下:试试这个:

onchange="DisableTextBox();"

<script language=javascript>
    function DisableTextBox() {
        var dropDown = document.getElementById('<%=DropDown.ClientID%>'); 

        if (dropDown.selectedIndex = ValueTocompare) {
            document.getElementById('<%=txtBoxID.ClientID%>').disabled = disabled;
        } else {
            document.getElementById('<%=txtBoxID.ClientID%>').disabled = '';
        }
    }
</script>

如果这对您不起作用,请尝试使用此小提琴: http://jsfiddle.net/SurajMindfire/zxvfcvq0/