关于这方面的问题确实存在于堆栈中,但答案是错误的或没什么用处。
来自较旧的VB,并且熟悉Java(代码在客户端上运行正常),尝试填充文本框服务器端asp正在推动我的问题。微软的逻辑完全是无用的(无论主题如何)。
是的,这可能是由于我缺乏概念化,但如果文本框有id并且我可以提取数据,为什么我不能写入具有命名id的不同文本框?
我可以写到正文,为什么不是一个带有命名id的文本框?对我来说完全是无稽之谈。只是文本框有问题吗?
任何反馈,特别是对我不理解的技术解释,都会非常感激。
非常简单的代码示例:
<!DOCTYPE html>
<html><body>
<form action="p3.asp" method="post">
AnyVal: <input type="text" name="AnyVal" size="20" />
Other: <input type="text" name="Other" size="20" />
<input type="submit" value="Submit" />
</form>
<%
dim sRet
sRet=Request.Form("AnyVal")
If sRet <> "" Then
Response.Write("Your Val is: " & sret & "!<br>")
Other.value=sRet
End If
%>
</body></html>
答案 0 :(得分:2)
是的,这可能是由于我缺乏概念化,
我同意这个说法,你根本无法做到这一点......让我解释一下这个过去几天我写的最近答案的摘录
vbscript dropdown in function without using HTML (classic ASP)
classic-asp几乎与Web上的所有其他预处理器语言一样 应用程序,没有教师直接与您的交互 浏览器。相反,该语言为您提供了一组写入方法 并从用户代理处接收数据(不是必需的浏览器)。
并且浏览器依赖于HTML,XHTML,CSS和衍生物来构建 用户的界面,并且由于预处理器没有这个事实 直接与HTML交互,这是其原因,因为你无法做到 在纯vbscript中删除HTML代码。
你想要做的是使用ASP语言将表单元素视为对象,遗憾的是你不能这样做,因为表单元素对于服务器预处理器(ASP)是不可见的。
您需要在HTML上实际编写代码,因为这样的表单元素并不存在于ASP引擎
<%
dim sRet
sRet=Request.Form("AnyVal")
If sRet <> "" Then
Response.Write("Your Val is: " & sret & "!<br>")
End If
%>
<!DOCTYPE html>
<html><body>
<form action="p3.asp" method="post">
AnyVal: <input type="text" value="<%=sRet%>" name="AnyVal" size="20" />
Other: <input type="text" value"<%=sRet%>" name="Other" size="20" />
<input type="submit" value="Submit" />
</form>
</body></html>
我希望我能够清楚地解释ASP的实际运作方式
答案 1 :(得分:0)
查看您的代码我认为实现您想要的最简单方法如下。
<%
dim sRet
sRet=Request.Form("AnyVal")
%>
<!DOCTYPE html>
<html><body>
<form action="p3.asp" method="post">
AnyVal: <input type="text" name="AnyVal" size="20" />
Other: <input type="text" name="Other" size="20" value="<%= Sret %>" />
<input type="submit" value="Submit" />
<%
If sRet <> "" Then
Response.Write("Your Val is: " & sret & "!<br>")
End If
%>
</form>
</body></html>
您的经典ASP是服务器端代码,您的表单元素是客户端,因此它们无法相互交互。
注意,您已将此标记为经典ASP。如果您的意思是ASP.net,那么您需要使用服务器端控件 - <asp:Textbox>
请注意,VB和VBScript是不同的,就像Java和JavaScript不同一样
编辑 - @Rafael打败了我发布这个,并且他给出了一个或多或少相同的更详细的解释,所以你应该接受他的回答
答案 2 :(得分:-1)
感谢您的回复,但我想我已将其钉死了。
我会发布下面的代码,以防其他人发现它有用。
我有点知道asp&amp; java以不同的方式与html交互,但是让我感到兴奋的一件事就是使用javascript变量来获取服务器端变量。
例如,var cret; cret =&lt;%= sret%&gt;
如果sret是一个数字就有效,但如果它是一个字符串就不行(不知道为什么,也许有人可以启发我)。
我确实想要让asp动态生成一个文本框并填充它。
但是,我真的希望客户端的javasript能够做到这一点。从实际的角度来看,我可能只是放弃了,让asp做到了,但我对整个事情变得有点兴奋。
我已经阅读了很多有关此问题的帖子,博客等。在我看来,提出的解决方案要么是复杂的,要么是没有工作。问题似乎得到了很多,所以我很惊讶地发现没有相当简单的答案。
我想做的一切都可以在javascript中完成,即使使用runat = server也是如此。但我特别希望将页面背后的一些代码保密。 afaik,这需要asp。
我怀疑这是其他人希望通过javascript来填充元素的主要原因仍然在服务器上使用asp。
以下代码使用表单帖子,其中asp可以进行一些操作并生成一个输入元素,可以通过javascript随后访问/操作。对于此示例,输入元素是隐藏的。
<!DOCTYPE html>
<html><head>
<title>asp java test</title>
</head>
<body>
<form action="p5.asp" method="post">
<p>Paste into the yellow box and then click Go.</p>
Set Val:
<input type="text" id="setval" name="setval" size="30"
style="background-color: #FFFFCC" />
<input type="submit" value="Submit" /><p>
Ret Val:
<input type="text" id="retval" name="retval" size="30" />
</form>
<!-- Server Side -->
<%
dim sret
sret = Request.Form("setval")
If sret = "" Then sret = " Nada"
// <!-- gen output server side-->
response.write("<input type='hidden' id='hid1' name='hid1' value='" & sret & "'/><br>")
%>
<!-- Client Side -->
<script language = "JavaScript">
var cret;
{
// Get the val
cret = document.getElementById("hid1").value;
// Populate the output box
document.getElementById("retval").value = cret;
}
</script>
</body></html>
似乎可以很好地发挥它的预期用途。
加里