我正在使用ASP.NET将值传递给JavaScript函数,由于某些原因我无法确定,当我尝试从另一个控件传入值时,它无法正常工作。相反,它的行为就像存在语法错误,它只是提交回主窗体。
有谁知道为什么?
示例:
<asp:TextBox ID="txtToSay" runat="server" Text="Something"></asp:TextBox>
<asp:Button runat="server" ID="btnSaySomething1" Text="Say Something"
OnClientClick="saySomething(<%=txtToSay.Text%>);" /> <!-- doesn't work -->
<asp:Button runat="server" ID="btnSaySomething1" Text="Say Something"
OnClientClick="saySomething('<%=txtToSay.Text%>');" /> <!-- doesn't work -->
<asp:Button runat="server" ID="btnSaySomething2" Text="Say Something"
OnClientClick="saySomething('Something');" /> <!-- works -->
<script type="text/javascript">
function saySomething(txt){
alert(txt);
};
</script>
其他信息:
在.NET 4.0上运行的Web应用程序 语言:C#
更新
使用了一段时间后,我确定你不能使用&lt; %%&gt; ASP控件中的标签。此外,如果您正在寻找动态评估控制值,请使用<%=someControl.Text%>
或类似结构避免避免,因为只有在将请求提交给服务器后才会对其进行评估。如果在运行时需要来自另一个控件的静态值,只需在页面加载事件中设置该值,或者在后面的代码中以另一种方式处理它。
答案 0 :(得分:2)
Javacript will search for variable name = txtToSay.Text
,在它周围加上引号使其成为字符串值
更改
OnClientClick="saySomething(<%=txtToSay.Text%>);"
要
OnClientClick="saySomething('<%=txtToSay.Text%>');"
你可以不用这样的方式获取txtToSay.Text
<script type="text/javascript">
function saySomething(txt){
alert(document.getElementById('<%=txtToSay.Text%>').value);
};
</script>
答案 1 :(得分:1)
您需要在'
来电中将saySomething()
放在您的文字周围。
像这样:
<asp:Button runat="server" ID="btnSaySomething1" Text="Say Something" OnClientClick="saySomething('<%=txtToSay.Text%>');" />
<强>更新强>
<%= %>
无法在asp.net控件中运行。你能从代码隐藏中设置它吗?
I.E
btnSaySomething1.OnClientClick = "Text to say"