2016-04-08 13 views
-2

Bir MVC projesi üzerinde çalışıyorum ve metin kutusu kayıp odağı olayıyla ilgili birkaç sorun yaşıyorum. Öncelikle bir formum var dört metin kutusu alanı var, ilk metin kutusunda çalışanın adını geçmemiz gerekiyor ama biz bu veritabanını kaybettik. Ben metin kutusuna isim ve "kaydet" butonuna tıklattığınızda sorun önce veritabanında kayıt var olup olmadığını kontrol etmek için ilk metin kutusu olayı denir ya da değil eğer kayıtlarımı kaydetmek için bir kez daha reclick gerekir. Yani bu durumda düğmeye iki kere basmalıyım.Textbox MVC.NET'te odak olayını kaybetti

Lütfen düşüncelerinize yardımcı olmak için kullanıcının iki kez tıklatmasını istemiyorum.

Teşekkür

+1

nasıl kimse incelemek için herhangi bir kod olmadan size yardımcı olmasını bekliyoruz do? MVC bir sunucu tarafı çerçevesidir ve metin kutularının odağını ayarlamaz. Bu Javascript kullanılarak gerçekleştirilir. –

+0

John'u anlıyorum, kod daha önce söylediğim gibi basit olacak Kayıp odak etkinliğini arıyorum. Geliştiriciler ekibimizi göstermek için yeni bir şey var. Yeni bie olduğum için bunun üzerinde iyi düşünceler olmasını istedim. –

cevap

0

Sana işi yapmak için jQuery ajax kullanabilir, söyleyebilirim. Metin kutusu odağı kaybolduğunda, DB'yi kontrol edecek ve kullanıcı adı zaten mevcut olsun veya olmasın durumu döndürecek olan denetleyici eylemine ajax alma çağrısı yapılır.

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(); 
}); }); 

Kontrolör Eylem:

[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); 
     } 
    } 

Görünüm:

<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>