Javascript更新ASP:标签未更新文本
Javascript Updating ASP:Label Not Updating Text
我有一个用户注册页面,我想在没有回发的情况下检查输入的用户名是否已经在用户中。
ASPX页面:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script src="Scripts/Registration.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<table class="contenttable">
<tr>
<td class="RegTableLabelCol">
<asp:Label ID="Label1" runat="server" Text="User Name"></asp:Label>
</td>
<td class="RegTableDataCol">
<asp:TextBox ID="txtUserName" runat="server" ></asp:TextBox>
</td>
<td class="RegTableMessageCol">
<asp:Label ID="lblUserName" runat="server" CssClass="ErrorLabel" Text="Test "></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</html>
JavaScript:
function UserChecker(username) {
lbl = document.getElementById('<%=lblUserName.ClientID%>');
if (username != '') {
PageMethods.UserNameChecker(username, OnUserSucceeded);
}
else {
lbl.innerHTML = 'Please enter a username';
}
}
function OnUserSucceeded(result, userContext, methodName) {
lbl = document.getElementById('<%=lblUserName.ClientID%>');
if (methodName == "UserNameChecker") {
if (result == true) {
lbl.innerHTML = 'User name not available';
}
else {
lbl.innerHTML = 'User name is available ';
}
}
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtUserName.Attributes.Add("onblur", "UserChecker(this.value)");
}
}
[WebMethod]
public static bool UserNameChecker(string UserName)
{
string UserNameDb = null;
SQLMethods sqlm = new SQLMethods();
DataSet dataSet1 = sqlm.IsUserNameExist(UserName);
foreach (DataRow row in dataSet1.Tables["UserName"].Rows)
{
UserNameDb = string.Format("{0}", row["UserName"]);
}
if (UserNameDb != null)
{
return true;
}
else
{
return false;
}
}
我在javascript中放入了警报,函数似乎被触发了。问题是没有为任何一种情况设置标签(没有用户名、使用用户名或用户名正常)。我哪里错了?
更新
JavaScript在一个.js文件中,如果我把它放在aspx页面中,它就会获得标签并工作。
lbl = document.getElementById('<%=lblUserName.ClientID%>');
在JS文件中将不起作用。<%=%>表示aspx页面的服务器代码部分。如果你把它放在一个JS文件中,它只是一个字符串。
您可以将此部分保留在页面中,并将lbl声明为在JS文件引用中起作用的全局变量。
或者,您可以将控件的ClientIDMode切换为static,然后在JS文件中使用控件的ID
相关文章:
- CKeditor不会在源代码模式下更新文本区域
- 基于复选框 Jquery 更新文本框
- 在里面输入新文本后更新文本区域内容的值
- 根据复选框选择 jQuery 更新文本框
- 如何在手动插入一些文本后更新文本区域的ng模型
- 使用选择框中的值更新文本区域
- 使用特定 ID 更新文本框
- SQL生成的选择菜单,根据相关值更新文本框
- JavaScript>on更改输入&选择更新文本区域
- 从下拉框更新文本框
- 当通过javascript而不是按键/复制/粘贴更新文本输入时使用的事件处理程序
- 使用 ID 更新文本区域值,而不是在 AngularJs 中使用 ng-model
- 如何使用 JavaScript 基于其他文本框更新文本框值
- 单击输入按钮时更新文本区域内容
- 更新文本框相对于表达式的值
- JS不更新文本框
- html5 画布 - 更新文本
- Elfinder文件管理器,带有多个按钮更新文本输入
- 挖空文本输入修改可观察不更新文本
- 在javascript中从servlet获得响应后更新文本区域