2016-11-16 121 views
0

當你點擊它並向上拖動鼠標增加數值並減小數值時,如何讓輸入類型文本改變它的值。只有當鼠標上下移動時,輸入值纔會改變(驗證最小最大)我有這個,但是我不能讓它作爲一個願望工作。當鼠標向上和向下拖動時,jQuery改變了數值輸入

JSBin Example

var clicking = false; 
$('#change_value_up_down').mousedown(function(){ 
    clicking = true; 
    $('.clickstatus').text('mousedown'); 
}); 
var i = 0; 
var y = 0; 
$('#change_value_up_down').mousemove(function(my){ 
    if(clicking === false) return; 

    // change value 
    y = my.pageY - this.offsetTop; 
    $(this).val(y); 

    // Mouse click + moving logic here 
    $('.movestatus').text('mouse moved ' + i); 
    i++; 
}); 
$('.selector').mouseup(function() { 
    i = 0; 
}); 

回答

1

Working fiddle

我想你想要像下面的例子一樣。

var down = false; 
var my = $("#change_value_up_down").offset().top; 
var counter; 

$(document).mousedown(function() { 
    down = true; 
}).mouseup(function() { 
    down = false; 
    clearInterval(counter); 
}); 

$("#change_value_up_down").mouseenter(function(e) { 
    clearInterval(counter); 
}) 

$("#change_value_up_down").mouseout(function(e) { 
    var current_value = $(this).val(); 
    var self = $(this); 

    if(down) { 
    if(e.clientY<my) { 
     counter = setInterval(function(){ 
      self.val(current_value++); 
     },300); 
    }else{ 
     counter = setInterval(function(){ 
      self.val(current_value--); 
     },300); 
    } 
    } 
}); 

希望這會有所幫助。

var down = false; 
 
var speed = 100; 
 
var my = $("#change_value_up_down").offset().top; 
 
var counter; 
 

 
$(document).mousedown(function() { 
 
    down = true; 
 
}).mouseup(function() { 
 
    down = false; 
 
    clearInterval(counter); 
 
}); 
 
$("#change_value_up_down").mouseenter(function(e) { 
 
    clearInterval(counter); 
 
}) 
 

 
$("#change_value_up_down").mouseout(function(e) { 
 
    var current_value = $(this).val(); 
 
    var self = $(this); 
 
    
 
    if(down) { 
 
    if(e.clientY<my) { 
 
     counter = setInterval(function(){ 
 
     \t \t self.val(current_value++); 
 
     },speed); 
 
    }else{ 
 
     counter = setInterval(function(){ 
 
     \t \t self.val(current_value--); 
 
     },speed); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<br><br> 
 
<br><br> 
 
<input type="text" value=5 id="change_value_up_down" size="2" style="cursor:n-resize;"/>

+0

是的,但是當你向上拖動鼠標,它會自動計算,那麼當您釋放鼠標 – iLen

+0

是停下來,什麼情況發生。沒有? http://recordit.co/TLQVrHvR6n –

+0

必須停止點擊時沒有按下,例如不會發生http://recordit.co/2tsvYFFw5h – iLen

0

您還可以使用fiddle

JS:

var clicking = false; 
     $('this').click(function() { 
      clicking = false; 
     }); 
     $('#change_value_up_down').mouseover(function() { 
      clicking = true; 
     }); 
     var i = 0; 
     var y = 0; 
     $(this).mousemove(function(my){ 
      if(clicking === false) 
      { 
       return false; 
      } 
      else 
      { 
       // change value 
       if (my.pageY <= $('#change_value_up_down').offset().top + $('#change_value_up_down').css('width').replace('px', '')/10) 
       { 
        y = parseInt($('#change_value_up_down').val()) +1 ; 
        $('.movestatus').text('plus'); 
        } 
       else 
       { 
        y = parseInt($('#change_value_up_down').val()) -1; 
        $('.movestatus').text('minus'); 
        } 
       $('#change_value_up_down').val(parseInt(y)); 
       // Mouse click + moving logic here 
       //$('.movestatus').text('mouse moved ' + i); 
       i++; 
      } 
     }); 
     $('#change_value_up_down').mouseup(function(e) { 
      clicking = false; 
      //e.stopPropagation(); 
     }); 
     $('.selector').mouseup(function(e) { 
      i = 0; 
     }); 
+0

它應該只增加或減少點擊時按下並從上到下移動,當不按下時不應該做任何動作 – iLen

+0

檢查此[小提琴](https://jsfiddle.net/pandeyvishal1986/ggqzb27f/#&togetherjs=x6the0lAf6 ) – RonyLoud

+0

這很好,但我希望它只會在點擊被按下時增加,因爲目前它在上下移動鼠標時沒有按下按鈕(我認爲它是在所有應該運行的mousedown事件中) – iLen

相關問題