Обновление пользовательского интерфейса слайдера материала при изменении другого слайдера - PullRequest
0 голосов
/ 20 ноября 2018

У меня проблемы с моими данными.Оба входа подключены.Когда вы щелкаете по первому, вторые входы перемещаются, но CSS не обновляется.

var $ra1 = $('#range1');
var $ra2 = $('#range2');

$ra1.on('input', function() {
    $ra2.val(this.max - this.value);
});
$ra2.on('input', function() {
    $ra1.val(this.max - this.value);
});
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Range 1
<input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1">

Range 2
<input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2">

enter image description here

РЕДАКТИРОВАТЬ: Я нашел обходной путь для IE11

var $ra1 = $('#range1');
var $ra2 = $('#range2');
if (navigator.appName == 'Microsoft Internet Explorer' ||  !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie == 1)){
    $ra1.change(function(){
        $ra2.get(0).MaterialSlider.change(this.max - this.value);
    });
    $ra2.change(function(){
        $ra1.get(0).MaterialSlider.change(this.max - this.value);
    });
 }else{
    $ra1.on('input', function() {
        $ra2.get(0).MaterialSlider.change(this.max - this.value);
    });
    $ra2.on('input', function() {
        $ra1.get(0).MaterialSlider.change(this.max - this.value);
    });
 }
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Range 1
<input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1"> 
Range 2
<input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2">

1 Ответ

0 голосов
/ 20 ноября 2018

Чтобы это работало, вам нужно установить значение с помощью библиотеки материалов, а не jQuery, чтобы оно обновляло пользовательский интерфейс.Для этого используйте функцию change в свойстве MaterialSlider элемента DOM, например:

var $ra1 = $('#range1');
var $ra2 = $('#range2');

$ra1.on('input', function() {
  $ra2.get(0).MaterialSlider.change(this.max - this.value);
});

$ra2.on('input', function() {
  $ra1.get(0).MaterialSlider.change(this.max - this.value);
});
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Range 1
<input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1"> Range 2
<input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...