2012-09-17 65 views
2

我有一個id爲「id_email」的輸入字段。用戶將在我的表單中將他的電子郵件輸入到此字段中。我試圖在用戶輸入的電子郵件上運行一些驗證碼。我想將輸入值傳遞給服務器以將其與數據庫進行比較,但jQuery不斷返回空白字符串。jQuery .html()返回null

HTML:

<div class="fieldWrapper"> 
       <label for="email">Email</label> 
       <input type="text" placeholder="Email" id="id_email" name="email" maxlength="75"> 
      </div> 

的Javascript:

function CheckDuplicateEmail(invalidForm) 
{ 
    $("#id_email").focusout(function() 
    { 
    $.ajax({ type: "POST", 
      url: "/CheckDuplicateEmail/", 
      dataType: "json", 
      data: {"email" : $("#id_email").html()}, 
      success: function(jsonObject) 
      { 
       if (jsonObject === "exists") 
       { 
        $("this").append("<ul class=\"errorlist\"><li>This email already exists<li></ul>") 
        invalidForm = true; 
       } 
       else 
       { 
        invalidForm = false; 
       } 
      } 
    }); 
    }); 
} 

當我看到那個被髮送到服務器的AJAX後,我可以看到,電子郵件是空白。 $(「#id_email」)。html()行失敗。我知道選擇器正常工作,因爲AJAX請求被髮送到服務器。這意味着$(「#id_email」)。focusout正常工作。由於該語句使用與$(「#id_email」)。html()語句相同的選擇器,因此我必須假定html()函數是錯誤的。請注意,我用相同的結果嘗試了text()函數。

有沒有人知道什麼是錯的?

+4

不要在輸入欄上使用的.html(),以獲取輸入字段的值使用$(「#id_email」)。val()而不是 – OJay

+0

hmmm ...嘗試'val()'也許? – bondythegreat

回答

3

使用$("#id_email").val()

function CheckDuplicateEmail(invalidForm) 
{ 
    $("#id_email").focusout(function() 
    { 
    $.ajax({ type: "POST", 
      url: "/CheckDuplicateEmail/", 
      dataType: "json", 
      data: {"email" : $("#id_email").val()}, 
      success: function(jsonObject) 
      { 
       if (jsonObject === "exists") 
       { 
        $("this").append("<ul class=\"errorlist\"><li>This email already exists<li></ul>") 
        invalidForm = true; 
       } 
       else 
       { 
        invalidForm = false; 
       } 
      } 
    }); 
    }); 
} 

可以簽出this post瞭解更多信息時使用的getter像.html().val().text()

3

改變這一行data: {"email" : $("#id_email").html()},

data: {"email" : $("#id_email").val()},

.html()不會對作品投入要素。您需要使用.val()來獲取輸入值。