2017-09-01 259 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>