2012-10-01 30 views
0

我已经有这个问题很长时间了,现在我试图通过DropDownList从一个人获得用户输入。它似乎第一次工作(在回发之后)。但是当我试图让用户从DropDownList中选择一个新值时,它似乎默认回到我以前选择的值。我的问题是如何获得JavaScript代码重新分配变量到当前新选定的值。如果我做回发,它似乎工作,因为它被刷新。不过,我不想每次都做回传。如何重置变量和重建DropDownList而不使用回发

这里是我的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 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的变量不是正在更新,如果它不是回发。

回答

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"

+0

我会尽快尝试,让你知道结果。谢谢,但这个信息 – user1084319

+0

会这样工作,你列出的问题:var dropDownList = document.getElementById $(“#<%= ddlCaseFilesNew.ClientID%>”);? – user1084319

+0

它应该工作,但只有当你的JS代码在ASPX文件。 – Smileek