Показать сообщение отдельно
  #10 (permalink)  
Старый 25.01.2019, 09:48
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

Как совместить код с фильтром
Ребята, прошу и молю Нашел на просторах интернета код (я полностью поместил сюда его, чтоб не терялась работоспособность), который использует localStorage. Пытаюсь совместить с фильтром. Чтоб после перезагрузки не сбрасывались значения. Значения в input получается сохранить, а вот отфильтрованная таблица сбрасывается после перезагрузки страницы. Как это совместно реализовать?

<form id="ds_form">
        <input name="first">
        <input name="second">
        <select name="third">
            <option>Value1</option>
            <option>Value2</option>
        </select>
        <div>
            <input type="radio" id="contactChoice1" name="contact" value="email">
            <label for="contactChoice1">Email</label>
 
            <input type="radio" id="contactChoice2" name="contact" value="phone">
            <label for="contactChoice2">Phone</label>
 
            <input type="radio" id="contactChoice3" name="contact" value="mail">
            <label for="contactChoice3">Mail</label>
        </div>
 
        <div>
            <input type="checkbox" id="checkboxChoice1" name="checkbox1" value="email">
            <label for="checkboxChoice1">Email</label>
 
            <input type="checkbox" id="contactChoice2" name="checkbox2" value="phone">
            <label for="checkboxChoice2">Phone</label>
 
            <input type="checkbox" id="checkboxChoice3" name="checkbox3" value="mail">
            <label for="checkboxChoice3">Mail</label>
        </div>
    </form>


<script>
        let ds = document.forms[0];
        ds.onchange = () => {
            let json = JSON.stringify(Array.from(new FormData(ds)));
            localStorage.setItem(ds.id, json);
        };
        document.addEventListener("DOMContentLoaded", () => {
            let values = JSON.parse(localStorage.getItem(ds.id));
            for (let i = 0; i < values.length; ++i) {
                let el = ds[values[i][0]];
                if (el.type === "checkbox")
                    el.setAttribute("checked", "");
                else
                    el.value = values[i][1];
            }
        });
</script>


Еще есть код, который после перезагрузки страницы сохраняет значения input, но совместить с фильтром не получается? Опять же таблица возвращается к начальному виду.

<script>
(function(){
var input = document.getElementById('inp');
if (localStorage.inp) {
input.value = localStorage.inp; }
input.onchange = function() {
localStorage.inp = this.value; }
})();
</script>


Сообщение от рони Посмотреть сообщение
denis_kontarev,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .ok{
      background-color: #228B22;
      color: #FFFFFF;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
  $("#cf_1x2").on("input", function() {
    var val = this.value.trim();
    $.each($("#t tbody"), function(i, tbody) {
        var tds = $("td", tbody).filter(function(i, td) {
        var num = td.textContent.match(/\d+(.\d+)?(?=\s*%)/);
        var ok = false;
        if(val && num != null){
        ok = !isNaN(+val) && +val < +num[0];
        };
        $(td).toggleClass("ok", ok);
        return ok || !val;
        });
        $(this).toggle(!!tds.length);
    });
  });
});

  </script>
</head>

<body>

<input type="text" class="form-control pull-right" id="cf_1x2" placeholder="Движение 1X2 от %" style="width: 100%;">

<table id="t">
    <thead>
        <th>22.01</th>
        <th>Команды</th>
        <th>1</th>
        <th>X</th>
        <th>2</th>
    </thead>
    <tbody>
        <tr class="team"><td>70%</td></tr>
        <tr class="1x2"><td>1</td></tr>
        <tr class="handicap"><td>2</td></tr>
        <tr class="total"><td>3</td></tr>
    </tbody>
    <tbody>
        <tr class="team"><td>40%</td></tr>
        <tr class="1x2"><td>1</td></tr>
        <tr class="handicap"><td>2</td></tr>
        <tr class="total"><td>3</td></tr>
    </tbody>
    <tbody>
        <tr class="team"><td>10%</td></tr>
        <tr class="1x2"><td>1</td></tr>
        <tr class="handicap"><td>2</td></tr>
        <tr class="total"><td>3</td></tr>
    </tbody>
</table>

</body>
</html>

Последний раз редактировалось denis_kontarev, 25.01.2019 в 11:44.
Ответить с цитированием