[英]Check if username exists in a asp.net form
我目前正在asp.net和c#中创建注册表。 我想要做的是允许用户输入用户名,当他们从文本框中移开焦点时,它会检查mysql数据库以查看用户名是否存在。 如果是这样,则会显示一个css容器来通知用户该用户名已被使用。
我试图使用Javascript / JQuery隐藏工作良好的CSS容器。 我的计划是在文本框中运行textchanged事件,然后如果此函数返回true,则将使用javascript / jquery重新显示css容器。 但是,我发现要使用文本更改事件,我需要在该字段上启用自动回发,这也意味着该表单已刷新并尝试提交该表单,因此使我的计划无法正常工作。
编辑以回应有关使用更新面板的说法。 我已经尝试过使用以下表单中的代码段尝试此方法
<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()代码的页面。 我试图用Javascript打印hello world或显示css容器,但在文本框失去焦点后似乎没有任何显示。 但是,当我单击提交按钮时,然后会显示response.write(),这不是我想要的。
谢谢你的帮助。
您可以使用Updatepanel表单asp.net Ajax工具包来防止回发。 或者,您可以使用JQuery进行AJAX并获取JSON响应。
因此,简短版本如下所示:
ASP.NET WebForms通常不执行 ajax。 这不是他们设计的目的。 它们设计用于回发。 因此,您需要从其中删除操作的“ ASP.NET”部分,并严格依赖于使用AJAX进行操作。
因此,您需要一个Web服务目标来将“建议的用户名”传递给它,您需要一个javascript方法“当发生更改时,通过ajax进行检查”和一个“在ajax完成时,显示框”的方法。
Web服务部分可以是ashx或asmx或svc或PageMethod(取决于您正在使用多少其他ASP.NET东西)。 它甚至可能是一个基于GET的ASPX页面(对于大多数开发人员来说过于刻板,只需要使用asmx / ashx概念即可)。
这两种方法看起来像:
function AjaxResult( response ) {
}
function AjaxCheck(event) {
// do the $.ajax() here and on success call AjaxResult with the response
}
然后将第二个绑定到文本框,如下所示:
<asp:TextBox ID="MyTextBox" runat="server" AutoPostBack="false" />
<script type="javascript">
$('#<%= MyTextBox.ClientID %>').change(AjaxCheck);
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.