我现在已经有很长时间了,我试图通过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的变量如果不是回发则不是更新。
答案 0 :(得分:1)
你有一个有趣的纯JS和jQuery代码组合。 似乎问题在于:
var newCaseDdl = dropDownList.options[dropDownList.selectedIndex].value;
触发$(document).ready
时保存此值
请尝试使用此行:
var newCaseDdl = $("#ddlCaseFilesNew").val();
注意:如果你使用母版页,这个元素的ID会看起来像这样:ctl00$ddlCaseFilesNew
有两种方法可以避免它:指定name
或class
属性,并更改选择器:$("[name=ddlCaseFilesNew]").val();
或$(".ddlCaseFilesNew").val();
第二个是在页面或控件上指定ClientIDMode="Static"
。