【发布时间】:2011-08-05 03:02:13
【问题描述】:
我目前正在用 asp.net 和 c# 创建一个注册表单。我想要做的是允许用户输入用户名,当他们从文本框中删除焦点时,它会检查 mysql 数据库以查看用户名是否存在。如果是这样,则会显示一个 css 容器以通知用户该用户名已被使用。
我尝试使用 Javascript/JQuery 来隐藏运行良好的 CSS 容器。我的计划是在文本框上运行 textchanged 事件,然后如果此函数返回 true,则使用 javascript/jquery 重新显示 css 容器。但是,我发现要使用文本更改事件,我需要在该字段上启用自动回发,这也意味着表单刷新并尝试提交表单,因此阻止了我的计划。
编辑 响应 sfomate 关于使用更新面板的问题。我已经使用表单中的以下代码段尝试了这种方法
<asp:ScriptManager ID="scriptManager" runat="server" />
<asp:UpdatePanel runat="server" ID="userUpdate" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtUsername" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:TextBox id="txtUsername" TextMode="SingleLine" required
placeholder="Username" runat="server"
ontextchanged="txtUsername_TextChanged" AutoPostBack="True" />
<span class="tooltip">Please enter your username</span>
<span class="fieldExists">Username exists</span>
</ContentTemplate>
</asp:UpdatePanel>
当文本框使用文本更改事件失去焦点时,这将停止整个页面的自动回发。但是,我添加的 Response.Write() 代码并没有向页面添加任何内容。我曾尝试仅打印 hello world 或使用 Javascript 显示 css 容器,但在文本框失去焦点后似乎没有立即显示。但是,当我单击提交按钮时,会显示 response.write() 这不是我想要的。
感谢您的帮助。
【问题讨论】:
-
顺便说一句,请使用“ASP.NET”标签,而不是“ASP”
-
仅供参考:请注意,这不会阻止重复插入。在您检查名称和插入名称之间,总是有可能另一个用户正在检查并插入相同的名称。您仍然需要处理重复的插入异常。