0

我已经有这个问题很长时间了,我试图通过 DropDownList 从一个人那里获取用户输入。它似乎第一次工作(回发后)。但是当我试图让用户从 DropDownList 中选择一个新值时,它似乎默认回到我之前选择的值。我的问题是如何让 javascript 代码将变量重新分配给当前新选择的值。如果我进行回发,它似乎可以工作,因为它会被刷新。但是我不想每次都回发。

这是我的javascript代码:

function getCaseFiles(canMoveExpenses) {
        //create Popup with content from div
        $('#ddlFiles').dialog({
            autoOpen: true,
            height: 'auto',
            width: 'auto',
            modal: true,
            buttons: {
                "Ok": function () {
                    debugger;
                    var dropDownList = document.getElementById("ddlCaseFilesNew");
                    var newCaseDdl = dropDownList.options[dropDownList.selectedIndex].value;
                    //alert("newCaseDdl = " + newCaseDdl);

                    var oldCaseFile = $("#hidCaseFile").val();//<asp:HiddenField id="hidCaseFile">
                    //alert(oldCaseFile);

                    if (newCaseDdl != -1) {
                        moveCasefile(canMoveExpenses, newCaseDdl, oldCaseFile);
                        $(this).dialog('close');
                        $("#viewExpensesGrid").flexReload();
                    }
                    else {
                        showMessage("Error. Please Select a Value From The Lists.");
                    }
                },
                Cancel: function () {
                    $(this).dialog('close');
                    $("#viewExpensesGrid").flexReload();
                }
            }
        });
    }

这是我的 DropDownList div:

<div id="ddlFiles">
    <label>
        Select new CaseFile:</label>
    <asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
        DataTextField="Display" DataValueField="FileID" 
        OnPreRender="ddl_PreRender" Width="300px"/>
</div>

我的函数调用此 div 并将其放置在自定义弹出窗口中。

如果不是回发,似乎我包含 selectedIndex 的变量不会被更新。

4

1 回答 1

1

你有一个有趣的纯 JS 和 jQuery 代码组合。看来问题出在这里:

var newCaseDdl = dropDownList.options[dropDownList.selectedIndex].value;

$(document).ready触发时保存此值。
试试这条线:

var newCaseDdl = $("#ddlCaseFilesNew").val();

注意:如果您使用母版页,此元素的 ID 将如下所示:ctl00$ddlCaseFilesNew
有几种方法可以避免它:指定nameclass属性,并更改选择器:$("[name=ddlCaseFilesNew]").val();$(".ddlCaseFilesNew").val();
第二种是ClientIDMode="Static"在页面或控件上指定。

于 2012-10-01T15:20:58.187 回答