【问题标题】:Click button automatically more than once jQueryjQuery 多次自动单击按钮
【发布时间】:2019-02-25 13:57:06
【问题描述】:

当我单击一个按钮时,我想在单击后再次自动单击它,例如 4 次。所以基本上你把它开火5 次。我有一个这样的代码来检索它应该被点击的数字。

$(document).ready(function() {

    var clickedTimes; 

    $( "form" ).change(function() {
     clickedTimes = jQuery('input#cfwc-title-field').val();
    });

    $('#single_add_to_cart_button').on('click', function(event){
        if ((clickedTimes-1)==0) {
                return;
        }
        clickedTimes -=1;
        console.log(`Click-Event triggered ${(5-(clickedTimes))} times.`);
        $( "#single_add_to_cart_button" ).trigger( "click" );
    });
});

例如clickedTimes = 5

点击下方的添加到购物车按钮后,它应该会再次自动触发4 次,因为我自己触发过一次。

【问题讨论】:

  • 您的代码没有点击事件。您的表单change 事件是否在按钮单击时触发...?无论如何,答案可能只是初始化一个 n 大小的 for 循环来触发其中的事件。
  • 首先,问题中的代码似乎与您要问的内容无关。其次,这是一个非常奇怪的要求,但将click 事件下的逻辑放入它自己的函数中并调用 N 次而不是伪造可能导致其他问题的多个事件会更有意义。更好的是,将逻辑放在一个你调用一次然后循环 N 次的函数中。也许如果您能告诉我们您为什么觉得有必要这样做,我们可以提供更好的选择。
  • 你开过一次?那么点击按钮会触发表单中的“onchange”事件吗?然后只需在 for 循环中执行 $("form").trigger('change') 即可。还是我误解了你的问题?
  • 编辑了我的问题,所以触发器应该在这个问题中循环 5 次。怎么办?
  • 你必须确定真正改变的是表单域cfwc-title-field

标签: javascript jquery function


【解决方案1】:

这是您的解决方案:

// clickedTimes=5; the value of clickedTimes must be set. 
$(document).ready(function() {      
    $('#single_add_to_cart_button').on('click', function(event){
        if ((clickedTimes-1)==0) {
                //clickedTimes=5;  .
                return;
        }
        clickedTimes -=1;
        console.log(`Click-Event triggered ${(5-(clickedTimes))} times.`);
        $( "#single_add_to_cart_button" ).trigger( "click" );
    });
})

这是一个有效的Fiddle

【讨论】:

  • clickedTimes 现在到处都是固定的数字。怎么动态填充呢?
  • 只需将其声明为全局变量,然后将其值设置为您想要的位置。删除我将其值设置为 5 的 2 行。
  • 你明白了吗?如果您仍有问题,请告诉我:尝试提供更多代码以显示“clickedTimes”的值来自何处,我会尽力帮助您。
  • 仍然没有 100% 得到它。在我的函数clickedTimes = aantal_tickets。我在更改表单字段后得到该值并将此数字放入 aantal_tickets
  • 在这种情况下,只需在处理源字段更改事件的函数中设置全局变量的值。如果您有多个表单字段,并且您需要为它们各自的 clickedTimes 设置不同的值,则在这种情况下您必须使用数组或字典。
【解决方案2】:

试试这个在类似的情况下对我有用。

 var aantal_tickets = 4;   //Here put the number of times you want auto submit
      (function submit(){
        if(aantal_tickets == 0) return;
        form.submit();   //action you want to perform
        aantal_tickets--;
        setTimeout(submit, 1000);   //Each second
      })(); 

【讨论】:

  • 为什么要费尽心思封装代码然后使用全局变量? form.submit(); 也会重新加载页面,杀死你的 javascript,所以这最终只会触发一次。
  • 我在 form.submit 旁边提到了一条评论作为您要执行的操作。而不是 form.submit 使用 console.log(Click-Event triggered ${(5-(aantal_tickets))} times.);可能会有所帮助
猜你喜欢
  • 2018-11-08
  • 2012-05-17
  • 1970-01-01
  • 2016-06-26
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多