1

ドロップダウンリストがあります。選択されたインデックスが変更されたとき、私はそれをjavascriptで処理したかった。そこで、最初のステップとして、JavaScriptを使用してテキストボックスにリストアイテムのテキストの値を出力しようとしました。しかし、それをうまく達成することができませんでした。ドロップダウンリストは次のとおりです。

       <asp:DropDownList Width="300px" ID="PlaceHoldersDropDownList" runat="server"
                AppendDataBoundItems="True" TabIndex="3" AutoPostBack="True" 
                OnSelectedIndexChanged = "PlaceHoldersDropDownList_SelectedIndexChanged"  >
            <asp:ListItem Value="">Select</asp:ListItem>
            <asp:ListItem Value="ContactName">[Contact Name]</asp:ListItem>
            <asp:ListItem Value="ProductName">[Product Name]</asp:ListItem>
            <asp:ListItem Value="ProductShortName">[Product Short Name]</asp:ListItem>
            <asp:ListItem Value="CurrentTime">[Current Time]</asp:ListItem>
            <asp:ListItem Value="EventStartTime">[Event Start Time]</asp:ListItem>
            <asp:ListItem Value="EventStopTime">[Event Stop Time]</asp:ListItem>
        </asp:DropDownList>
        <asp:TextBox ID="tb" runat="server"></asp:TextBox>

これがC#コードです

            protected void PlaceHoldersDropDownList_SelectedIndexChanged(object sender, 
                                                            EventArgs e)
    {
        var text = PlaceHoldersDropDownList.SelectedItem.Text;

        string x = text;
        PlaceHoldersDropDownList.Attributes.Add("onchange", "javscript:PasteTextInEditor
                                                                        ('"+text+"')");

    }

これがJavaScriptです

       function PasteTextInEditor(text) {

        var x = document.getElementById("<%= tb.ClientID %>");
        x.value = text;                    }

私が犯した間違いを教えていただけますか?

4

2 に答える 2

1

最初にクライアント側(javascript)で処理するためにfalseに設定する必要があり、プログラムでイベントAutoPostBackを追加する必要はありません。そのようなものに書くだけですonchange<asp:DrobDownList>

<asp:DropDownList Width="300px" ID="PlaceHoldersDropDownList" runat="server"
     AppendDataBoundItems="True" TabIndex="3" AutoPostBack="false"
     onchange="PasteTextInEditor()">

メソッドは次のPasteTextInEditorようになります

function PasteTextInEditor() {
    var text = $("#<%= PlaceHoldersDropDownList.ClientID %> option:selected").text();
    $("#<%= tb.ClientID %>").val(text);
}

私はjquery構文を使用していることに注意してください

于 2012-05-22T14:34:13.767 に答える
0

jQueryを使用すると、次のことができます。

1-オフにしてイベントAutoPostBackを処理しない:OnSelectedIndexChanged

<asp:DropDownList Width="300px" ID="PlaceHoldersDropDownList" runat="server" AppendDataBoundItems="True" TabIndex="3" >

2- jQuery への参照を追加する

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

3-「スタートアップ」スクリプトを追加しonchangedて、ドロップダウン リストのイベントをフックします。詳細については、javascripts コメントをお読みください。

<script type="text/javascript">
    $(function () {
        var ddl = $("#<%= PlaceHoldersDropDownList.ClientID %>");
        var txt = $("#<%= tb.ClientID %>");

        // hook the change event for the drop down list
        $(ddl).change(function (e) {
            var selectedValue = $(ddl).val();

            // set the selectedValue into the textBox
            $(txt).val(selectedValue);
        });
    });
</script>
于 2012-05-22T14:50:28.427 に答える