0

複数のフィールドを持つ ASPX フォームがあります。

問題のフィールド (ドロップダウン) を選択すると、別のドロップダウンとテキスト フィールドが無効になるはずですが、何らかの理由で機能しません。

私は何を間違っていますか?

<td class="td"><asp:DropDownList ID="DeliveryTypeList" runat="server" AutoPostBack="true" onchange="javascript:changeTextFields();"></asp:DropDownList></td>

私が持っているJavaScriptは次のとおりです。

<script type = "text/javascript">
function changeTextFields() {
    var val = document.getElementById("DeliveryTypeList").text;
    if (val == "PO Box 110") {document.getElementById("ReceivedFrom").disabled = false;  document.getElementById("ReferenceNumber").disabled = false }
    if (val == "Courier Delivery") { document.getElementById("ReceivedFrom").disabled = true; document.getElementById("ReferenceNumber").disabled = false }
}

4

3 に答える 3

0

サーバー側のコントロールであるため、ドロップダウンの ID は同じになることはありません。Java Script では代わりに class を使用してください。

小切手

ドロップダウンで選択した値が変更されたときにdivを非表示にする

同様の問題のために。

于 2013-03-19T17:11:54.130 に答える
0

クライアントの状態を維持するために、サーバーから戻った後にページの読み込み時にスクリプトを呼び出す必要があります。

JavaScript を使用e.options[e.selectedIndex].valueしているため、ドロップダウンリストの選択した値を取得するために使用できます。

私の考え: jQuery を使用すると、javascript と比較して DOM を選択するのがはるかに簡単になります。

<asp:DropDownList ID="DeliveryTypeList" runat="server" 
    AutoPostBack="true" onchange="javascript:changeTextFields();">
    <asp:ListItem Text="PO Box 110" Value="PO Box 110" />
    <asp:ListItem Text="Courier Delivery" Value="Courier Delivery" />
</asp:DropDownList>
<asp:DropDownList ID="ReceivedFrom" runat="server">
</asp:DropDownList>
<asp:TextBox ID="ReferenceNumber" runat="server" />
<script type="text/javascript">
    function changeTextFields() {
        var e = document.getElementById('<%= DeliveryTypeList.ClientID %>');
        var val = e.options[e.selectedIndex].value;
        if (val == "PO Box 110") {
            alert(val);
            document.getElementById('<%= ReceivedFrom.ClientID %>').disabled = false;
            document.getElementById('<%= ReferenceNumber.ClientID %>').disabled = false;
        }
        if (val == "Courier Delivery") {
            alert(val);
            document.getElementById('<%= ReceivedFrom.ClientID %>').disabled = true;
            document.getElementById('<%= ReferenceNumber.ClientID %>').disabled = false;
        }
    }
    // Call at page load
    changeTextFields();
</script>
于 2013-03-19T18:12:41.237 に答える