我正在使用Drupal 7,问题是我有一个输入类型文本,默认情况下,带有2个箭头的产品数量(添加购物车按钮的小部件数量)。
使用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 ...',
OR
$('#edit-quantity').change(function (e) {alert('Type: ' + e.type); });
我的观点是,为什么这个.change()事件会创建这样一个循环?或者更好的我如何阻止它使用该事件?
谢谢,
答案 0 :(得分:0)
您可以使用"输入"而不是改变
$('#textbox').on('input', function() {
// do your stuff
});
最好不要在文本字段上使用更改。单选按钮,选择字段,复选框等更改首选...
答案 1 :(得分:0)
希望它可以帮助某人,最后我只是寻找所有变化的可能性。不仅在输入中还有用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);
});
});