计算在不使用全局变量的情况下单击按钮的次数

时间:2014-08-27 13:42:57

标签: javascript jquery onclick click

有没有办法告诉用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++;
        });
});

仅举例 - &gt;我想让用户点击按钮4次,但如果他点击次数超过4次,我会显示一些警告信息

5 个答案:

答案 0 :(得分:3)

您可以将计数存储在按钮的data

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

答案 1 :(得分: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);
    });
});

答案 2 :(得分: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/

我希望它会对你有帮助;)

答案 3 :(得分: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);
    });
});

答案 4 :(得分:0)

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

count在domready上执行的匿名函数中定义。因此,它只能在匿名函数内部(以及其中的所有内容,例如提交函数)

修改

您可以测试它不在全球范围内:

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