簡體   English   中英

檢查用戶名是否存在於asp.net表單中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM