这是我的.aspx页面中的代码,我正在使用自动完成文本框。
<script type="text/javascript">
$(document).ready(function () {
SearchText();
});
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Preferences.aspx/GetAutoCompleteData",
data: "{'Name':'" + document.getElementById('txtSearch').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
}
</script>
<table style="width:auto">
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Please Type Student Name:"></asp:Label>
</td>
<td>
<input type="text" id="txtSearch" class="autosuggest" />
<asp:TextBox ID="TextBox1" runat="server" Text=txtsearch Visible="true" class="autosuggest"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" />
</td>
</tr>
</table>
如果我在
中输入runat =“Server”<input type="text" id="txtSearch" class="autosuggest" />
然后自动完成不起作用。表单标记用于母版页。
使用控件的名称属性解决了问题
源代码:
<input type="text" name="_name" />
<asp:Button ID="btnShow" runat="server" Text="Show" onclick="btnShow_Click" />
代码隐藏:
protected void btnShow_Click(object sender, EventArgs e)
{
string strValue = Page.Request.Form["_name"].ToString();
Response.Write(strValue);
}
参考:http://www.etechpulse.com/2013/02/get-html-input-controls-value-server.html
谢谢你的帮助。
答案 0 :(得分:2)
如果您使用的是MasterPage,那么ASP.net将自动为每个控件生成一个名称并将其附加到您的控件上。为了获取控件的唯一ID,您需要使用JQuery ClientID。
放runat="server"
但是将你的jquery函数更改为(这将通过ClientID检索输入):
function SearchText() {
$("#<%=txtSearch.ClientID%>").autocomplete({
或者作为替代方案(由DeeMac建议)使用静态ClientIDMode。
答案 1 :(得分:0)
要获取值表单文本框,您需要使用服务器控件。
<asp:TextBox ID="txtSearch" runat="server" ></asp:TextBox>
您还可以在服务器控件中添加 ClientIDMode =“static”以保持您的ID完全相同,或者您可以使用$("#<%=txtSearch.ClientID%>")
来获取动态生成的ID。