Javascript 按钮鼠标向下不在断点处停止
我正在尝试创建一个简单的微调器插件,我面临一个问题 复制该问题:Javascript 按钮鼠标向下不在断点处停止,javascript,jquery,Javascript,Jquery,我正在尝试创建一个简单的微调器插件,我面临一个问题 复制该问题: 单击并按住“加号”或“减号”按钮 达到max或min后,按钮将被禁用,您将收到一条消息,表明您已达到最大值或最小值 现在只在另一侧单击一次,以增加或减少微调器一步 现在再次单击并按住第一个按钮 微调器将通过max或min一步,然后停止 怎么了 (函数($){ $.fn.spiner=函数(){ $(this).each(function(){ 变量错误={ min:“看起来你在min”, 麦克斯:“看起来你在麦克斯” }; v
max
或min
后,按钮将被禁用,您将收到一条消息,表明您已达到最大值或最小值max
或min
一步,然后停止(函数($){
$.fn.spiner=函数(){
$(this).each(function(){
变量错误={
min:“看起来你在min”,
麦克斯:“看起来你在麦克斯”
};
var-temp=0.0;
var-toUp=null;
var-ivUp=null;
var toDown=null;
var-ivDown=null;
var inc=$(this.find('.btn add');
var out=$(this.find('.btn nums');
var dec=$(this.find('.btn-less');
var min=$(this.data('min');
var max=$(this.data('max');
var step=$(this.data('step');
变量类型=$(this).data('type');
var maxerr=$(this).data('maxerr');
var miner=$(this.data('mineror');
函数MaxStop(){
如果(温度>=最大值){
清除超时(toUp);
清除间隔(ivUp);
$('.btn add').prop('disabled',true);
$('.btn-less').prop('disabled',true);
12月道具(“禁用”,错误);
$('.result').html(''+errors.max+'');
}
}
函数MinStop(){
如果(温度0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(parseFloat(Math.round(temp*100)/100).toFixed(2));
}
MaxStop();
}
函数MoreDown(){
温度=温度-阶跃;
如果(温度>0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(parseFloat(Math.round(temp*100)/100).toFixed(2));
}
MinStop();
}
inc.on(“mousedown”,function(){
$(“.btn减”).prop('disabled',false);
$(“.btn add”).prop('disabled',false);
$('.result').children().addClass('fadeOutDown');
温度=温度+阶跃;
如果(温度>0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(parseFloat(Math.round(temp*100)/100).toFixed(2));
}
toUp=setTimeout(函数(){
ivUp=设置间隔(MoreUp,75);
}, 500);
})
.on(“mouseup mouseleave”,函数(){
清除超时(toUp);
清除间隔(ivUp);
MaxStop();
});
dec.on(“鼠标向下”,函数(){
$(“.btn减”).prop('disabled',false);
$(“.btn add”).prop('disabled',false);
$('.result').children().addClass('fadeOutDown');
温度=温度-阶跃;
如果(温度>0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(parseFloat(Math.round(temp*100)/100).toFixed(2));
}
toDown=setTimeout(函数(){
ivDown=设置间隔(MoreDown,75);
}, 500);
})
.on(“mouseup mouseleave”,函数(){
清除超时(toDown);
清除间隔(ivDown);
MinStop();
});
});
}
}(jQuery));
$('.spiner').spiner()代码>
正文{
填充顶部:10px;
}
.btn处方。btn{
边界半径:0px;
最大高度:46px;
光标:指针;
宽度:50px;
}
.btn处方。btn nums{
背景:#fff!重要;
颜色:#555!重要;
大纲:无!重要;
盒影:无!重要;
宽度:80px;
}
-
0
+
我认为这是因为检查是否超过了最大值或最小值并不是在您认为的所有时间都发生的。为了防止出现这种情况,我会在MoreUp()
和moreund()
函数中添加条件检查,这样每次单击相应的按钮时,都可以确保不超过或低于限制
换句话说,if(temp
和if(temp>min){
,如下面的代码段所示
(函数($){
$.fn.spiner=函数(){
$(this).each(function(){
变量错误={
min:“看起来你在min”,
麦克斯:“看起来你在麦克斯”
};
var-temp=0.0;
var-toUp=null;
var-ivUp=null;
var toDown=null;
var-ivDown=null;
var inc=$(this.find('.btn add');
var out=$(this.find('.btn nums');
var dec=$(this.find('.btn-less');
var min=$(this.data('min');
var max=$(this.data('max');
var step=$(this.data('step');
变量类型=$(this).data('type');
var maxerr=$(this).data('maxerr');
var miner=$(this.data('mineror');
函数MaxStop(){
如果(温度>=最大值){
清除超时(toUp);
清除间隔(ivUp);
$('.btn add').prop('disabled',true);
$('.btn-less').prop('disabled',true);
12月道具(“禁用”,错误);
$('.result').html(''+errors.max+'');
}
}
函数MinStop(){
如果(温度0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(parseFloat(Math.round(temp*100)/100).toFixed(2));
}
MaxStop();
}
}
函数MoreDown(){
如果(温度>分钟){
温度=温度-阶跃;
如果(温度>0){
out.html(“+”+parseFloat(Math.round(temp*100)/100).toFixed(2));
}否则{
html(pars