2017-10-10 16 views
0

2つのスライダと入力があります。一番上の番号を変更すると、下のブロックの番号とスライドは変更されません。私は何を完了すべきですか?uiスライダの入力とスライドの変更

$(document).ready(function() { 
 
\t \t var $doorwayWidth = $(".js-doorway-width"); // ширина 
 
\t \t var $doorWidthDisable = $(".js-door-width"); // ширина disable 
 
\t \t var $doorwayHeight = $(".js-doorway-height"); // высота 
 
\t \t var $doorHeightDisable = $(".js-door-height"); // высота disable 
 
\t \t 
 
\t \t var doorwayWidthSlider = $("#doorwayWidthSlider").slider({ 
 
\t \t  range: "min", 
 
\t \t  min: 650, 
 
\t \t  step: 50, 
 
\t \t  max: 1000, 
 
\t \t  value: 1000, 
 
\t \t  slide: function(event, ui) { 
 
\t \t   var totalWidth = ui.value ; 
 
\t \t   $doorwayWidth.val( ui.value); 
 
\t \t   var doorSize = calcDoorSize(totalWidth); 
 
\t \t   doorWidthSlider.slider("option","value", doorSize[0]);   
 
\t \t  }, 
 
\t \t  change: function(event, ui){ 
 
\t \t   $doorwayWidth.val( ui.value);   
 
\t \t  } 
 
\t \t }); 
 
\t \t $doorwayWidth.val(doorwayWidthSlider.slider("value")); 
 
\t \t $doorwayWidth.val(700).focusout(function() { 
 
     \t $("#doorwayWidthSlider").slider("value", this.value); 
 
    \t }).focusout(); 
 

 

 
\t \t var doorWidthSlider = $("#doorWidthSlider").slider({ 
 
\t \t  range: "min", 
 
\t \t  disabled: true, 
 
\t \t  min: 600, 
 
\t \t  step: 100, 
 
\t \t  max: 900, 
 
\t \t  value: 900, 
 
\t \t  change: function(event, ui){ 
 
\t \t   $doorWidthDisable.val( ui.value);  
 
\t \t  } 
 
\t \t }); 
 
\t \t $doorWidthDisable.val(doorWidthSlider.slider("value")); 
 

 

 
\t \t var sliderOptions = [ 
 
\t \t  { 
 
\t \t   minWidth: 650, 
 
\t \t   maxWidth: 700, 
 
\t \t   minHeight: 2040, 
 
\t \t   maxHeight: 2080, 
 
\t \t   doorWidth: 600, 
 
\t \t   doorHeight: 2000 
 
\t \t  }, 
 
\t \t  { 
 
\t \t   minWidth: 750, 
 
\t \t   maxWidth: 800, 
 
\t \t   minHeight: 2040, 
 
\t \t   maxHeight: 2080, 
 
\t \t   doorWidth: 700, 
 
\t \t   doorHeight: 2000 
 
\t \t  }, 
 
\t \t  { 
 
\t \t   minWidth: 850, 
 
\t \t   maxWidth: 900, 
 
\t \t   minHeight: 2040, 
 
\t \t   maxHeight: 2080, 
 
\t \t   doorWidth: 800, 
 
\t \t   doorHeight: 2000 
 
\t \t  }, 
 
\t \t  { 
 
\t \t   minWidth: 950, 
 
\t \t   maxWidth: 1000, 
 
\t \t   minHeight: 2040, 
 
\t \t   maxHeight: 2080, 
 
\t \t   doorWidth: 900, 
 
\t \t   doorHeight: 2000 
 
\t \t  } 
 
\t \t ]; 
 

 
\t \t function calcDoorSize(totalWidth) { 
 
\t \t  var doorWidth = null; 
 
\t \t  for (var i = 0; i < sliderOptions.length; i++) { 
 
\t \t   if (totalWidth >= sliderOptions[i].minWidth && totalWidth <= sliderOptions[i].maxWidth) { 
 
\t \t    doorWidth = sliderOptions[i].doorWidth; 
 
\t \t    break; 
 
\t \t   } 
 
\t \t  } 
 
\t \t  return [ doorWidth]; 
 
\t \t } 
 
\t \t 
 
    });
<script src="https://code.jquery.com/jquery-2.1.3.js"></script> 
 
\t <script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script> 
 
\t <link href="https://code.jquery.com/ui/1.11.3/themes/hot-sneaks/jquery-ui.css" rel="stylesheet" /> 
 

 

 
\t <div> 
 
\t  <div> 
 
\t   <label>Width</label> 
 
\t   <input class="js-doorway-width" name="calculatorPvhSquare" type="text"> 
 
\t  </div> 
 

 
\t  <div>       
 
\t   <div id="doorwayHeightSlider"></div> 
 
\t   
 
\t   <img src="" alt=""> 
 
\t   
 
\t   <div id="doorwayWidthSlider"></div> 
 
\t  </div> 
 
\t </div>    
 

 
    <div> 
 
     <div> 
 
      <label>Width</label> 
 
      <input class="js-door-width" type="text" disabled> 
 
     </div> 
 
     <div>       
 
      <div id="doorHeightSlider"></div>    
 
      <img src="" alt="">    
 
      <div id="doorWidthSlider" ></div>    
 
     </div> 
 
    </div>

答えて

0

です。

$doorwayWidth.val(700).focusout(function() { 
    $("#doorwayWidthSlider").slider("value", this.value); 
    var totalWidth = this.value; 
    var doorSize = calcDoorSize(totalWidth); 
    doorWidthSlider.slider("option", "value", doorSize[0]); 
}).focusout(); 

$(document).ready(function() { 
 
\t var $doorwayWidth = $(".js-doorway-width"); // ширина 
 
\t var $doorWidthDisable = $(".js-door-width"); // ширина disable 
 
\t var $doorwayHeight = $(".js-doorway-height"); // высота 
 
\t var $doorHeightDisable = $(".js-door-height"); // высота disable 
 

 
\t var sliderOptions = [ 
 
\t \t { 
 
\t \t \t minWidth: 650, 
 
\t \t \t maxWidth: 700, 
 
\t \t \t minHeight: 2040, 
 
\t \t \t maxHeight: 2080, 
 
\t \t \t doorWidth: 600, 
 
\t \t \t doorHeight: 2000 
 
\t \t }, 
 
\t \t { 
 
\t \t \t minWidth: 750, 
 
\t \t \t maxWidth: 800, 
 
\t \t \t minHeight: 2040, 
 
\t \t \t maxHeight: 2080, 
 
\t \t \t doorWidth: 700, 
 
\t \t \t doorHeight: 2000 
 
\t \t }, 
 
\t \t { 
 
\t \t \t minWidth: 850, 
 
\t \t \t maxWidth: 900, 
 
\t \t \t minHeight: 2040, 
 
\t \t \t maxHeight: 2080, 
 
\t \t \t doorWidth: 800, 
 
\t \t \t doorHeight: 2000 
 
\t \t }, 
 
\t \t { 
 
\t \t \t minWidth: 950, 
 
\t \t \t maxWidth: 1000, 
 
\t \t \t minHeight: 2040, 
 
\t \t \t maxHeight: 2080, 
 
\t \t \t doorWidth: 900, 
 
\t \t \t doorHeight: 2000 
 
\t \t } 
 
\t ]; 
 

 
\t var doorwayWidthSlider = $("#doorwayWidthSlider").slider({ 
 
\t \t range: "min", 
 
\t \t min: 650, 
 
\t \t step: 50, 
 
\t \t max: 1000, 
 
\t \t value: 1000, 
 
\t \t slide: function (event, ui) { 
 
\t \t \t var totalWidth = ui.value; 
 
\t \t \t $doorwayWidth.val(ui.value); 
 
\t \t \t var doorSize = calcDoorSize(totalWidth); 
 
\t \t \t doorWidthSlider.slider("option", "value", doorSize[0]); 
 
\t \t }, 
 
\t \t change: function (event, ui) { 
 
\t \t \t $doorwayWidth.val(ui.value); 
 
\t \t } 
 
\t }); 
 
\t $doorwayWidth.val(doorwayWidthSlider.slider("value")); 
 

 
\t var doorWidthSlider = $("#doorWidthSlider").slider({ 
 
\t \t range: "min", 
 
\t \t disabled: true, 
 
\t \t min: 600, 
 
\t \t step: 100, 
 
\t \t max: 900, 
 
\t \t value: 900, 
 
\t \t change: function (event, ui) { 
 
\t \t \t $doorWidthDisable.val(ui.value); 
 
\t \t } 
 
\t }); 
 
\t $doorWidthDisable.val(doorWidthSlider.slider("value")); 
 

 
\t $doorwayWidth.val(700).focusout(function() { 
 
\t \t $("#doorwayWidthSlider").slider("value", this.value); 
 
\t \t var totalWidth = this.value; 
 
\t \t var doorSize = calcDoorSize(totalWidth); 
 
\t \t doorWidthSlider.slider("option", "value", doorSize[0]); 
 
\t }).focusout(); 
 

 
\t function calcDoorSize(totalWidth) { 
 
\t \t var doorWidth = null; 
 
\t \t for (var i = 0; i < sliderOptions.length; i++) { 
 
\t \t \t if (totalWidth >= sliderOptions[i].minWidth && totalWidth <= sliderOptions[i].maxWidth) { 
 
\t \t \t \t doorWidth = sliderOptions[i].doorWidth; 
 
\t \t \t \t break; 
 
\t \t \t } 
 
\t \t } 
 
\t \t return [doorWidth]; 
 
\t } 
 
});
<script src="https://code.jquery.com/jquery-2.1.3.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script> 
 
<link href="https://code.jquery.com/ui/1.11.3/themes/hot-sneaks/jquery-ui.css" rel="stylesheet" /> 
 

 
<div> 
 
\t <div> 
 
\t \t <label>Width</label> 
 
\t \t <input class="js-doorway-width" name="calculatorPvhSquare" type="text"> 
 
\t </div> 
 

 
\t <div> 
 
\t \t <div id="doorwayHeightSlider"></div> 
 

 
\t \t <img src="" alt=""> 
 

 
\t \t <div id="doorwayWidthSlider"></div> 
 
\t </div> 
 
</div> 
 

 
<div> 
 
\t <div> 
 
\t \t <label>Width</label> 
 
\t \t <input class="js-door-width" type="text" disabled> 
 
\t </div> 
 
\t <div> 
 
\t \t <div id="doorHeightSlider"></div> 
 
\t \t <img src="" alt=""> 
 
\t \t <div id="doorWidthSlider"></div> 
 
\t </div> 
 
</div>

+0

お、ありがとうございます!私は考えを持っています var totalWidth = this.value; var doorSize = calcDoorSize(totalWidth); doorWidthSlider.slider( "option"、 "value"、doorSize [0]); しかし、明らかにオブジェクトの位置が重要です。ありがとうございました! – crabosse0

+0

@ crabosse0 'focusout'に変更を加えて、私は既存のコードを再配置しました。このソリューションがあなたを助けてくれてうれしいです。 –

0

あなたが入力に新しい値を書き込むと、関数がスライダーを変更しようとしている間に機能をトリガするonkeyupfunctionを書き得ました。

$('.js-doorway-width').keyup(function(){ 
     $('#doorwayWidthSlider').slider('value',$('.js-doorway-width').val()); 
    }); 

これは、あなたがdoorSizeを再計算し、doorWidthSliderのためのスライダ値を設定するには、次の$doorwayWidthfocusoutイベントを更新することができDemo

+0

あなたの答えをいただき、ありがとうございます。しかし、入力に数字を入力することはできません。 650の値があり、入力に数字を入力することはできません。 – crabosse0

+0

あなたのスライダーが650より低い値を受け入れず、あなたの数字を消去しようとするときに650より小さくなるためです。スライダーの最小値を0に変更してから試してください。 –

関連する問題