2013-08-07 41 views
1

我在RegisterView中有一個<td>@Html.EditorFor(m => m.User.Username)</td>。這裏是fireBUg的HTML:無法獲得jQuery中的EditorFor值?

<td> 
<input id="User_Username" class="text-box single-line" type="text" value="" name="User.Username" data-val-required="The Username field is required." data-val="true"> 
</td> 

我寫一個litte jquery代碼來檢查用戶名是否用戶名退出。這裏是我的代碼:

function CheckUserNameExits() { 
$("#User_Username").on("blur", function() { 
    $("#User_Username").addClass("thinking"); 
    var username = $("#User_Username").val(); 
    $.ajax({ 
     url: "/Account/CheckUsername", 
     data: { userName: username }, 
     dataType: "json", 
     type: "POST", 
     error: function() { 
      return; 
     }, 
     success: function (data) { 
      if (data) { 
       $("#User_Username").addClass("approved"); 
      } 
      else { 
       $("#User_Username").addClass("denied"); 
       $(".field-validation-error").html("The username already exits."); 
      } 
     } 
    }); 
}); 

}

但是當我填寫文本框,離開它。 POST值始終爲空。我確定我的腳本工作正常,它總是返回true,因爲帖子值爲空。我的控制器方法:

[HttpPost] 
    public ActionResult CheckUsername(string userName) 
    { 
     var user = IUserRepo.GetUserByUrName(userName); 
     if (user!= null) 
      return Json(false); 
     return Json(true); 
    } 

在調試userName參數時始終爲空。我試圖通過$(".text-box")更改$("#User_Username"),但POST值也爲空。任何對我來說都是合情合理的?

+0

你在調試什麼瀏覽器?帖子是否正確地發送到服務器?當你通過代碼進行調試時會發生什麼 – ermagana

+0

如果你在'var username = $(「#User_Username」)。val();你的javascript函數中放置'alert(username)',你會得到什麼?''我懷疑因爲[THIS FIDDLE](http://jsfiddle.net/dknRf/)與您的代碼原樣工作正常,因此頁面上有多個ID = User_Username。 – ethorn10

+0

它工作正常,我的錯誤。關閉。 – Luffy

回答

1

試試這個

function CheckUserNameExits() { 
$("#User_Username").on("blur", function() { 
    $("#User_Username").addClass("thinking"); 
    var username = $("#User_Username").val(); 
    $.ajax({ 
     contentType: "application/json, charset=utf-8", 
     url: "/Account/CheckUsername", 
     data: '{ "userName":"' + username + '"}', 
     dataType: "json", 
     type: "POST", 
     error: function() { 
      return; 
     }, 
     success: function (data) { 
      if (data) { 
       $("#User_Username").addClass("approved"); 
      } 
      else { 
       $("#User_Username").addClass("denied"); 
       $(".field-validation-error").html("The username already exits."); 
       } 
      } 
     }); 
    }); 
} 
0

idEditFor,並嘗試

@Html.EditorFor(m => m.User.Username,new{id="EDUserName"}) 

function CheckUserNameExits() { 
$("#EDUserName").on("blur", function() { 
    $("#EDUserName").addClass("thinking"); 
    var username = $("#EDUserName").val(); 
    $.ajax({ 
     url: "/Account/CheckUsername", 
     data: { userName: username }, 
     dataType: "json", 
     type: "POST", 
     error: function() { 
      return; 
     }, 
     success: function (data) { 
      if (data) { 
       $("#EDUserName").addClass("approved"); 
      } 
      else { 
       $("#EDUserName").addClass("denied"); 
       $(".field-validation-error").html("The username already exits."); 
      } 
     } 
    }); 
}); 
}