2012-10-01 26 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