好吧,我正在尝试执行一个简单的命令:从TextBox获取文本。我已经搜索过了,但每个答案对我来说都失败了。
在我的代码 aspx 中:
<form id="form1" runat="server" method="post">
<div class="form">
<div class="form-search ngen-search-form">
<span id="search-trigger" class="form-search-submit">
<img src="Imagens/Lupa_Icon 2.png" id="lupa"/>
</span>
<asp:TextBox ID="txtBoxSearch" runat="server" CssClass="form-search-input" placeholder="Pesquise..." ViewStateMode="Enabled"/>
</div>
</div>
</form>
我有一个Javascript函数来验证我的客户端按下了什么键:
$(document).keypress(function(e) {
if(e.which == 13){
if( document.getElementById("txtBoxSearch").value == "" ) return true;
else {
<% setSearch(); %>
document.getElementById("testeArv").innerHTML='<%=search.ToString()%>';
return false;
}
}// First if
});
最后,我在代码隐藏中的函数 setSearch(( 是:
public void setSearch( )
{
if( !Page.IsPostBack ) {
search = txtBoxSearch.Text;
}
}
主要错误是关于如何在jQuery中调用代码隐藏方法。看看这里知道该怎么做。总结:你需要 ajax
然后你必须记住它确实 Page.IsPostBack
.
有了!Page.IsPostBack
你说的是"首页访问",但当你按下按钮时!Page.IsPostBack
将是假的。如果您尝试相同的示例,则:
public void setSearch( )
{
if(!Page.IsPostBack) {
// First page access
search = txtBoxSearch.Text;
} else {
// The page has been reloaded
search = txtBoxSearch.Text;
}
}
它会起作用。(else
将运行(
我不确定,但我用按钮尝试过(没有jQuery(,但发生了同样的错误。您希望在按 Enter 时运行该功能,以便页面将重新加载。看看这里。
也许它以某种方式帮助你。
这是阻止您在回发中获取值的<form>
标记。删除 <form
> 标记并将AutoPostBack=true
用于文本框。你不需要使用 jQuery 来捕获事件和值。
不能从客户端代码调用代码隐藏代码。它们在不同的机器上执行。