我尝试使用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的值。我尝试了以下方法:
在研究这个问题时,我看到.value使用了很多,并且自己尝试了但是当我去输入 document.getElementById(&#39; hidden&#39;)时.value = , .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 :(得分:1)
当您在webform上键入元素ID时,asp.net会根据某些内容(您的表单,转发器等)为其提供唯一ID。
如果要将jQuery与此ID一起使用,可以使用ClientId prop。
这样的事情:
if (reason != "" && reason != "Code:CancelDelete") {
//If your server id= "hidden"
ele = $("#<%= hidden.ClientID %>");
ele.html() = reason.toString();
...
}
另一种选择是将静态ID添加到服务器元素,然后您的代码将按原样运行。 (html将以ID =隐藏呈现)
的ClientIDMode =&#34;静态&#34;
<div>
<asp:HiddenField ID="hidden" runat="server" ClientIDMode="static"/>
</div>
答案 1 :(得分:0)
您正尝试设置ID为隐藏&#39;的元素的值,但这不是隐藏输入的ID。
正确的ID是&#39; IndividualPageContent_hidden&#39;。
设置如下的值:
document.getElementById('IndividualPageContent_hidden').value = 'Your value here';