Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当调用输入文本更改事件时,Drupal进入循环_Javascript_Jquery_Drupal_Drupal 7 - Fatal编程技术网

Javascript 当调用输入文本更改事件时,Drupal进入循环

Javascript 当调用输入文本更改事件时,Drupal进入循环,javascript,jquery,drupal,drupal-7,Javascript,Jquery,Drupal,Drupal 7,我正在使用Drupal7,问题是我有一个输入类型文本,用于产品的数量,默认情况下在span中有两个箭头(添加购物车按钮的小部件数量) 当使用js_injector模块获取输入的“change()”事件时,发生了一些奇怪的事情,一个循环开始根据单击的箭头或多或少地更改输入值 jQuery(function($) { $(document).ready(function(){ $('#edit-quantity').bind('change key

我正在使用Drupal7,问题是我有一个输入类型文本,用于产品的数量,默认情况下在span中有两个箭头(添加购物车按钮的小部件数量)

当使用js_injector模块获取输入的“change()”事件时,发生了一些奇怪的事情,一个循环开始根据单击的箭头或多或少地更改输入值

    jQuery(function($) {
        $(document).ready(function(){
              $('#edit-quantity').bind('change keydown keyup click input submit mouseenter', function (e) {alert('Type: ' + e.type); });

        });
      });
->这可以正常工作,但无法获得箭头范围选项:

     $('#edit-quantity').bind('keydown keyup click input submit mouseenter',...
->这些选项将创建一个循环:

     $('#edit-quantity').bind('change ...',

我的观点是,为什么这个.change()事件会创建这样一个循环?或者更好,我如何阻止它使用事件

谢谢,

您可以使用“输入”代替更改

$('#textbox').on('input', function() {
    // do your stuff
});

最好不要对文本字段使用更改。单选按钮、选择字段、复选框等更倾向于更改

希望它能帮助别人,最后我只是寻找了所有可能的改变。不仅在输入中,而且在用span表示的“按钮”处。我做了一些小把戏,结果是这样的:

    jQuery(function($) {
    function value()
    {
       if($(this).index()!=0) //Just execute once
       {
               var price=parseFloat(document.getElementsByClassName('field-item')[0].innerHTML.replace(' €','')).toFixed(2);
               var quantity = parseFloat($("#edit-quantity").val());
               price *= quantity;
               var glbvar = price.toFixed(2).replace('.',',')+' €';

       //Set Price
               document.getElementsByClassName('field-name-commerce-price')[0].getElementsByClassName('field-item')[0].innerHTML = glbvar ;
       }
    }

      $(document).ready(function(){
       //When refreshing the value get lost:
            if( parseFloat($("#edit-quantity").val()) != 1)  value();


    /*For input*/ $("#edit-quantity").bind("propertychange keyup paste input",value);
    /*For span*/  $('span').bind('click',value);

       });
     });

谢谢@JSunny,但我已经将“输入”放在了选项之间,正如您在第二行代码中看到的那样。这不是一个完整的解决方案,因为它没有考虑增加或减少值的“按钮”,甚至关键字箭头。
    jQuery(function($) {
    function value()
    {
       if($(this).index()!=0) //Just execute once
       {
               var price=parseFloat(document.getElementsByClassName('field-item')[0].innerHTML.replace(' €','')).toFixed(2);
               var quantity = parseFloat($("#edit-quantity").val());
               price *= quantity;
               var glbvar = price.toFixed(2).replace('.',',')+' €';

       //Set Price
               document.getElementsByClassName('field-name-commerce-price')[0].getElementsByClassName('field-item')[0].innerHTML = glbvar ;
       }
    }

      $(document).ready(function(){
       //When refreshing the value get lost:
            if( parseFloat($("#edit-quantity").val()) != 1)  value();


    /*For input*/ $("#edit-quantity").bind("propertychange keyup paste input",value);
    /*For span*/  $('span').bind('click',value);

       });
     });