jQuery - 重置keyup上的值

时间:2013-12-02 11:45:21

标签: jquery

我的jQuery代码有问题。我有这个脚本,用户首先选择他们想要添加点击次数的曝光类型。

当他们选择曝光时,jQuery代码将显示他们对该曝光的点击次数。

问题是,如果用户首先选择曝光,他们有0次点击,然后选择他们有超过0次点击的曝光,我的键盘脚本将只写“0”。

这里有一个例子:

http://jsfiddle.net/2FSzH/

请尝试先选择“标准曝光”,然后选择“微曝光”并尝试在输入字段中输入示例“500”。我的脚本不允许这样做。

这是控制仅限数字脚本的代码:

if(value == 1){
        $('.available-clicks').html(clicksmicro);
        $('.numbersonly').keyup(function () { 
            var inputval = $('.numbersonly').val();
            this.value = this.value.replace(/[^0-9\.]/g,'');
            if(inputval > clicksmicro){
                $('.numbersonly').val('0');
            }
        });
     }else if(value == 2){
        $('.available-clicks').html(clicksmini);
        $('.numbersonly').keyup(function () { 
            var inputval = $('.numbersonly').val();
            this.value = this.value.replace(/[^0-9\.]/g,'');
            if(inputval > clicksmini){
                $('.numbersonly').val('0');
            }
        });
     }else if(value == 3){
        $('.available-clicks').html(clicksstandard);
        $('.numbersonly').keyup(function () { 
            var inputval = $('.numbersonly').val();
            this.value = this.value.replace(/[^0-9\.]/g,'');
            if(inputval > clicksstandard){
                $('.numbersonly').val('0');
            }
        });
     }else if(value == 4){
        $('.available-clicks').html(clicksextended);
        $('.numbersonly').keyup(function () { 
            var inputval = $('.numbersonly').val();
            this.value = this.value.replace(/[^0-9\.]/g,'');
            if(inputval > clicksextended){
                $('.numbersonly').val('0');
            }
        });
     }

2 个答案:

答案 0 :(得分:1)

您正在向keyUp添加事件而不删除已绑定它的事件。尝试解除绑定之前添加一个新绑定。例如,您可以使用off

 $('.numbersonly').off('keyup');

工作演示here

答案 1 :(得分:0)

这是因为每次用户更改下拉列表时都会添加新的事件侦听器。这导致许多同时处理程序,结果是不可预测的。为避免这种情况,您需要在分配新处理程序之前执行.off("keyup")。但是,还有另一个问题。你有一大堆等于代码。我建议你将最大值移到data-attribute并使用一个绑定一次的事件处理程序。