2016-04-08 233 views
-2

我正在處理MVC項目,並且我很少遇到文本框丟失焦點事件的問題。 首先我有一個表單有四個文本框字段,在第一個文本框我們需要傳遞員工姓名,但是我們已經調用此文本框失去焦點事件來填充員工的所有記錄,如果它已經在數據庫中但我有問題,當我在文本框中傳遞名稱並單擊「保存」按鈕,然後調用第一個文本框事件來檢查數據庫中是否存在記錄,然後我需要再次按下按鈕以保存我的記錄(如果不存在)。 所以在這種情況下,我必須點擊按鈕兩次。MVC.NET中的文本框丟失焦點事件

請幫助您的想法我不希望用戶點擊兩次。

謝謝

+1

你怎麼能指望任何人能夠幫助你無需任何代碼審查? MVC是一個服務器端框架,並沒有設置文本框的焦點。這是使用Javascript執行的。 –

+0

我明白約翰,代碼會很簡單,正如我之前所說的,我稱之爲失去焦點事件。我們的新開發人員團隊正在注意新的東西。只是因爲我是新人,所以想要對它有好的想法。 –

回答

0

我會說,你可以使用jquery ajax來完成這項工作。 當文本框焦點丟失時,ajax會調用控制器動作來檢查數據庫,並返回用戶名是否已存在的狀態。

的Jquery:

$(document).ready(function() { 
$("#UserName").focusout(function() { 
    var username = $("#UserName").val(); 
    var fullurl = '/User/UserNameCheck?username=' + username; 
    if (username.length > 0) { 
     $.ajax({ 
      url: fullurl, 
      type: 'GET', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      //data: username, 
      success: function (data) { 
       if (data == 'UserNotPresent') { 
        $("#username_NotPresent_lbl").show(); 
       } 
       else if (data == 'UserPresent') { 
        $("#username_Present_lbl").show(); 
       } 
       else { 
        $("#failed_check_lbl").show(); 
       } 
      }, 
      error: function (e) { 
       $("#failed_check_lbl").show(); 
      } 
     }); 
    } 
}); 

$("#UserName").focus(function() { 
    $("#username_NotPresent_lbl").hide(); 
    $("#username_Present_lbl").hide(); 
    $('#failed_check_lbl').hide(); 
}); }); 

控制器動作:

[AllowAnonymous] 
    [HttpGet] 
    public JsonResult UserNameCheck(string username) 
    {    
     Users loggedInUser = db.Users.FirstOrDefault(x => x.UserName == username); 
     if (loggedInUser != null) 
     { 
      return Json("UserPresent", JsonRequestBehavior.AllowGet); 
     } 
     else 
     { 
      return Json("UserNotPresent", JsonRequestBehavior.AllowGet); 
     } 
    } 

查看:

<div class="form-group"> 
     @Html.LabelFor(model => model.UserName, new {@class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.UserName) 
      @Html.ValidationMessageFor(model => model.UserName) 
      @Html.Label("Sorry this user name is already in use", new {id="username_Present_lbl", @class ="ErrorLbl"}) 
      @Html.Label("User name available for use", new {id="username_NotPresent_lbl", @class ="SuccesLbl"}) 
      @Html.Label("Failed to validate the user name", new {id="failed_check_lbl", @class ="FailedCheckLbl"})     
     </div> 
    </div> 
相關問題