2015-06-02 29 views
0

我有一個帶有電子郵件輸入的表單,一個按鈕覆蓋它,當我點擊按鈕時,按鈕在輸入中滑動,因此您可以輸入電子郵件。當你點擊按鈕時,它必須提交表單。如何不提交表單,然後提交?

我該怎麼做?

<form action="http://databox.createsend.com/t/d/s/itkkyu/" method="post" class="subscribe-form" accept-charset="utf-8"> 
<input id="fieldEmail" name="cm-itkkyu-itkkyu" class="input" type="email" placeholder="Your company email"> 
<button class="get-notified" type="submit">Get notified</button> 
</form> 

JS:

(function() { 
    var count = 0; 

    $('.subscribe-form button').click(function() { 
     $('.subscribe-form').submit(function(e) { 
      e.preventDefault(); 
      count += 1; 
     }); 

    if (count == 1) { 
      console.log('oj'); 
      $('.subscribe-form').submit(function() { 

      }); 

    } 
    }); 
})(); 
+0

你能鏈接到一個小提琴或例子嗎?不完全確定你想要做什麼。用戶是否單擊該按鈕將其滑過,然後在鍵入電子郵件後再次單擊該按鈕? –

+1

呃,難道你不會這樣做嗎?if(count === 0)e.preventDefault();'並且讓表單在計數大於零時提交? – adeneo

+0

是的,當按鈕滑過它時,表單必須提交。 –

回答

0

您可以使用此結構。提交方法將只在第二次點擊時運行。

(function() { 
    var submit = false; 
    $('.subscribe-form button').click(function (e) { 
     if (!submit) { 
      e.preventDefault(); 
      submit = true; 
      return; 
     } 
    }); 
})(); 
1

使用jQuery.one()添加一個一次性事件,其取消了提交,那麼使用jQuery.submit()觸發後,不管它是什麼,你正在做的是完成提交事件。

$('.subscribe-form').one('submit',function(e) { 
    e.preventDefault(); 
    // do something 
    $(this).submit(); 
}); 
+0

這可行,但如果OP想要在三次點擊後提交,該怎麼辦?我發佈了一個解決方案,可以用於任何你想要的櫃檯門檻。 –

+0

的確,我只是從OP有一個計數器這一事實推斷出......在你的情況下,無論如何你都要在第一次點擊時提交表單,我不確定調用'e .preventDefault()'是因爲你在調用submit。我想你可以做一些異步的事情。從OP公佈的內容來看,這聽起來像是他們想第二次提交它被點擊了?很難說出真正的意圖。 –

0

沒有必要處理點擊按鈕,只是提交事件。當您確實需要提交時,您只需要撥打e.preventDefault()即可。

(function() { 
    var count = 0; 
    $('.subscribe-form').submit(function(e) { 
     if (count < 1) { 
      e.preventDefault(); 
      count += 1; 
     } 
    } 
});