2011-04-19 71 views
1

我有一點jquery,提交一個電子郵件註冊表格爲我。當用戶點擊按鈕時,一切正常,但當命中輸入似乎表單試圖通過HTML提交,而不是通過jquery,你會發現表單應該發佈的位置。我一直在使用.submit代替。點擊試過但沒有似乎工作提交表單使用jquery,按鈕的作品,但不是'輸入'按

$('#email-signup-button').click(function() { 
     var email = $('#email-address').val(); 

     // Check to see if field is blank 
     if (email.length < 1) { 
      errorLog += ('Please provide an email address.'); 
      errorCount++; 
     } 

     // If field is email address, check w/ regex 
     if (email.match(emailRegex) == null) { 
      if (errorCount == 0) { 
       errorLog += ('Email address is invalid.\nPlease verify.'); 
       errorCount++; 
      } 
     } 

     if (errorCount > 0) { 
      alert(errorLog); 
      errorCount = 0; 
      errorLog = ""; 
     } 
     else { 
      $.post("/Home/AddEmail", { emailAddress: email }); 

      alert('Thank you for signing up!'); 
      $('#email-address').val(""); 
      $('#email-signup').hide(); 
      $('.lb_overlay').hide(); 
     } 

     return false; 
    }); 
} 


     <div id="email-signup"> 
      <h2> 
       Content Phrase 
      </h2> 
      <div class="email-deals-close-button"> 
      </div> 
      <p> 
       More Content</p> 
      <form action="/Home/AddEmail" class="clearfix" method="post"> 
      <p class="sign-up"> 
       <label class="placeholder" for="email-address"> 
        [email protected]</label> 
       <input type="text" id="email-address" name="email-address" value="" /> 
      </p> 
      <button id="email-signup-button" type="button" class="green-action-button"> 
       Submit</button> 
      </form> 
     </div> 

回答

1

是電子郵件註冊按鈕爲您的表單提交按鈕(即type="submit。)?如果沒有,它應該是爲了這個工作。如果你不希望它是,你可以設置窗口捕捉事件進入並直接到該按鈕的Click事件:

$(window).bind('keypress', function(e){ 
    if ($(e.originalTarget).is(':input') && e.keyCode == 13) { 
    $(#email-signup-button").click(); 
    e.preventDefault(); 
    } 
}); 

code source

而且看起來是一個地方可能導致混淆問題的名稱衝突錯誤:

表單及其子元素不應使用與表單屬性(如提交,長度或方法)衝突的輸入名稱或ID。名稱衝突可能導致令人困惑的失敗。有關規則的完整列表並檢查您的標記是否存在這些問題,請參閱DOMLint

jQuery docs

理想的情況下找到任何導致不提交工作和使用。

+0

id =「email-signup-button」,是的,這是我的電子郵件註冊按鈕 – Lawrence 2011-04-19 17:08:26

+0

@勞倫斯 - 但它是'?看起來不是,那將意味着'.submit()'不能按預期工作。如果你不想使用提交按鈕,那麼我提供的窗口輸入修復程序將工作。 – justkt 2011-04-19 17:09:29

+0

@ input type =「text」id =「email-address」name =「email-address」value =「」/>是他們輸入電子郵件的輸入 – Lawrence 2011-04-19 17:11:26

4

你應該重視的形式本身,而不是按鈕的點擊提交事件。

$("#formid").submit(//your function here); 
0

防止該情況的發生提出:

$('#your_form_id').submit(function() { 
    return false; 
}); 
+0

。提交劑量似乎正在工作 – Lawrence 2011-04-19 17:02:44

+1

問題是由文森特提到的。他將按鈕添加到按鈕點擊,而不是形成提交。 – 2011-04-19 17:05:30

+0

啊,好的。這更有意義。 – Blender 2011-04-19 20:11:52

0

您可以綁定到表單的提交事件來代替。

$('#myForm').submit(function(){ /* do stuff */ }); 
0

這樣做:

$("form").submit(function(e){ 
e.preventDefault();return false; 
}); 
2

您的按鈕類型設置爲按鈕。如果你想綁定到一個提交事件,你需要你的按鈕是一個輸入,其類型爲type="submit"

相關問題