2017-09-01 258 views
0

我想使用JavaScript彈出框(提示)在我的網站上獲取一些用戶輸入,然後根據用戶的操作在服務器端執行一些更多操作。客戶端數據到服務器端

彈出框是缺少單詞彈出。

以下是我曾嘗試使用此代碼:

<div> 
    <asp:HiddenField ID="hidden" runat="server" /> 
</div> 
<script> 
    function userInput() { 
     var reason = prompt("Enter reason for deleting:", ""); 
     //User pressed okay but didn't type anything 
     while (reason == "") { 
      //Keeps cycling until reason given or cancel is hit 
      reason = prompt("Enter reason for deleting:", ""); 
     } 
     if (reason != "" && reason != "Code:CancelDelete") { 
      //User typed something and hit okay 
      document.getElementById('hidden').innerHTML = reason.toString(); 
      $('#deleteReason').val(reason.toString()); 
      $("#hidden").val(reason.toString()); 
     } 
     else { 
      //User hits cancel 
      document.getElementById('hidden').nodeValue = "Code:CancelDelete"; 
     } 
    } 
</script> 

腳本中的while循環適用於什麼,我需要做的。我可以告訴的問題是試圖設置HiddenField的值。我曾嘗試以下方法:

  • 的innerHTML
  • 的innerText
  • 的nodeValue

雖然尋找到這一點,我已經看到.value的使用了很多,並沒有嘗試過自己,但是當我去鍵入document.getElementById('hidden')。value =,沒有彈出選項或說明。值

我測試了服務器端代碼,所以我知道這是有效的。這一切都歸結爲獲取用戶輸入。無論哪種方式,這裏是從C#代碼摘錄:

string deleteReason = hidden.Value; 
//string deleteReason = test.InnerHtml.ToString(); 
if (deleteReason.Equals("Code:CancelDelete")) 
{ 

} 
else if (!deleteReason.Equals("Code:CancelDelete") && !deleteReason.Equals("")) 
{ 

或多或少地在這一個損失。

更新1: 這裏是在客戶端瀏覽器(Firefox)的隱藏字段生成的HTML代碼:

<input name="ctl00$IndividualPageContent$hidden" 
id="IndividualPageContent_hidden" type="hidden"> 
+0

什麼是隱藏字段的實際客戶端HTML? – David

+0

@David顯示我定義隱藏字段的那一點點是我對它的唯一位。 – TGills

+0

查看生成的實際客戶端HTML。 JavaScript代碼將與瀏覽器中的HTML進行交互,而不是ASP.NET服務器端代碼。 – David

回答

0

您正在嘗試設置與ID隱藏元素」的價值',但這不是你隱藏輸入的標識。

正確的ID是'IndividualPageContent_hidden'。

這樣設置的值,而不是:

document.getElementById('IndividualPageContent_hidden').value = 'Your value here'; 
1

當你鍵入網頁表單元素的ID的asp.net給它基於一些東西(你的形式,你的中繼器,等一個唯一的ID .. )

如果你想使用帶有這個ID的jQuery,你可以使用ClientId prop。

事情是這樣的:

if (reason != "" && reason != "Code:CancelDelete") { 
      //If your server id= "hidden" 
      ele = $("#<%= hidden.ClientID %>"); 
      ele.html() = reason.toString(); 
      ... 
     } 

另一種方法是靜態ID添加到您的服務器的元素,然後你的代碼將工作是。 (html的將ID呈現=隱藏)

的ClientIDMode = 「靜態」

<div> 
    <asp:HiddenField ID="hidden" runat="server" ClientIDMode="static"/> 
</div>