2011-04-13 134 views
2

我正在使用jQueryUI ProgressBar向用戶顯示他們使用了多少允許的文件存儲。百分比是在代碼隱藏中計算的,應該傳遞給Javascript。從代碼隱藏向Javascript傳遞值

.aspx的代碼

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
     <script type="text/javascript"> 
      $(function() { 
       var pct = document.getElementById("filesPercentage").value; 
       $("#progressbar").progressbar({ 
        value: pct 
       }); 
      }); 
     </script> 
    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
     ... 
    <input type="hidden" runat="server" id="filesPercentage" />      
    <div id="progressbar"></div>   
     ... 
    </asp:Content> 

代碼隱藏

protected void Page_Load(object sender, EventArgs e) 
{ 
    filesPercentage.Value = "85"; 
} 

現在看來似乎不能從隱藏字段的百分比數。任何幫助,將不勝感激。

+0

是否隱藏字段包含的值,如果你查看源代碼? – 2011-04-13 22:18:19

+0

filesPercentage可能不會成爲控件一旦呈現後的ID。 – 2011-04-13 22:21:27

回答

2

因爲你的隱藏字段是一個服務器控制這可能是因爲該ID是如何產生比其他filesPercentage東西(可能是someth荷蘭國際集團一樣ctl00_ctl00_filesPercentage

  • 您可能需要將生成的客戶端ID適用於您的JavaScript document.getElementById("<%=filesPercentage.ClientID%>").value;
  • 或者使用選擇隱藏價值的另一種方式,如$('[hidden's parent element] input[type="hidden"]').val()

另外,它看起來像進度欄值期待一個數字,所以你可能需要做value: pct * 1value: parseInt(pct)

http://jsfiddle.net/pxfunc/QyZSs/

+0

解決我的第一個問題,並預測我將遇到的下一個問題的好工作。這工作完美。 – Laplace 2011-04-13 22:35:11

0

.net將修改您給予控件的ID以確保它是唯一的,因此您沒有使用正確的ID訪問它。如果你給隱藏字段一個唯一的類名,您可以訪問值的方法:

<input type="hidden" runat="server" id="filesPercentage" class="hiddenClass" /> 
var pct = $('.hiddenClass').val(); 
3

你需要讓你的隱藏輸入

var pct = document.getElementById("<%=filesPercentage.ClientID%>").value; 

的呈現ID和的那一刻起,你在服務器上運行,輸入其更好地使用asp:HiddenField,而不是input

1

試試這個

var pct = document.getElementById("<%=filesPercentage.ClientID %>").value; 
0

這是一個有點清潔恕我直言:-)

$("#progressbar").progressbar({ 
    value: $("#<%=filesPercentage.ClientID%>").val() 
});