2014-08-27 86 views
0

有沒有一種方法可以告訴我使用jQuery點擊了多少次表單提交按鈕?計算按鈕被點擊的次數而不使用全局變量

我發現了一些答案here但我不想使用全局變量。

有沒有一種方法來實現這一點,而不使用全局變量在jQuery中?

<form id="form"> 
    <input type="button" id="Submit" name="Submit" value="Submit" /> 
</form> 

的JavaScript:

var count = 0; 
$(document).ready(function(){ 
    $("form#Submit").submit(function(){ 
      count++; 
     }); 
}); 

只是舉例 - >我想允許用戶點擊按鈕的4倍,但如果他點擊超過4倍,我會表現出一定的警告消息

+0

移動的變種數= 0;進入匿名功能。 – Pinoniq 2014-08-27 13:45:07

+0

我不這麼認爲,因爲在所有情況下,您必須使用變量來保存點擊按鈕的次數。 – 2014-08-27 13:46:06

+0

這是關於範圍;) – Pinoniq 2014-08-27 13:46:38

回答

2

所以這是一個答案編輯幫你一起

$(document).ready(function() { 
    $("form#Submit").submit(function() { 
     var count = $(this).data("count") || 0; 
     if(count >= x) 
     { 
      //user clicked more than you wanted to so do something here 
     } 

     $(this).data("count", ++count); 
    }); 
}); 
3

你可以將計按鈕的data

$(document).ready(function() { 
     $("form#Submit").submit(function() { 
      var count = $(this).data("count") || 0; 
      $(this).data("count", ++count); 
     }); 
    }); 
+0

所以如果我想阻止用戶多次點擊該按鈕,例如4次用戶可以點擊按鈕!!! .....所以你可以修改上面的代碼,以便用戶只能點擊4次 – Hitesh 2014-08-27 13:53:04

+0

@hitesh:所有你需要做的就是捕獲$(this).date('count')將它作爲一個int轉換並添加一個if塊。你應該自己嘗試,沒有逐字回答。 – workabyte 2014-08-27 13:58:07

+0

@workabyte - 謝謝:)你能否按照你的解釋編輯你的代碼!這樣我可以更好地理解! – Hitesh 2014-08-27 14:09:19

0

最初,爲您的按鈕添加一個id爲'clicked-0'。現在做如下:

$(document).ready(function(){ 
    $("form#Submit").submit(function(){ 
     var clicks = $(this).attr('id').replace('clicked-',''); 
     clicks = clicks+1; 
     alert("No. of times clicked:"+clicks); 
     $(this).attr('id','clicked-'+clicks); 
    }); 
}); 
0
$(document).ready(function(){ 
    var count = 0; 
    $("form#Submit").submit(function(){ 
     count++; 
     console.log(count); //for instance 
    }); 
}); 

計數在上domready中執行匿名函數定義。因此,僅僅是aonymous函數內部可用的(和ofcourse到裏面的一切,如提交功能)

編輯

您可以測試它不是在全球範圍內:

$(document).ready(function(){ 
    var count = 0; 
    $("form#Submit").submit(function(){ 
     count++; 
     console.log(count); //for instance 
     console.log(window.count); //undefined 
    }); 
}); 
+0

的值,但它仍然是全局變量 – Hitesh 2014-08-27 13:54:49

+0

euhm。 noo ...也許定義'全球' – Pinoniq 2014-08-27 14:17:16

1

的JavaScript

function CountOnFormSubmitEvent(form_id, _callback_) 
{ 
    var that = this, count = 0, callback = _callback_; 

    var form = document.getElementById(form_id); 
    if(form === null) { return null; } 

    var reset = function(){ 
     count = 0; 
    }; 

    form.addEventListener("submit", function(evt){ 
     callback(evt, ++count, reset); 
    }, false); 
} 

var counter = new CountOnFormSubmitEvent("myForm", function(event, count, reset_callback){ 
    event.preventDefault(); 
    if(count >= 4) 
    { 
     alert("Too many clicks !"); 
     reset_callback(); 
    } 
}); 

http://jsfiddle.net/3snmg7bt/

我希望它會幫助你;)

+1

感謝jsfiddle鏈接和純JS代碼...這很好 – Hitesh 2014-08-28 06:10:15