Показывать предупреждающее сообщение, если в списке присутствуют повторяющиеся значения - PullRequest
0 голосов
/ 18 января 2019

У меня есть два столбца, как показано на рис. когда я нажал кнопку вправо , выбранное поле перейдет во 2-й столбец, но у меня есть 4 поля, которые уже поступают из базы данных, и теперь, если я переместил Имя во 2-й столбец, он также примет это, но мне нужно показать сообщение об ошибке «дубликаты не допускаются», если уже выбрано значение

enter image description here

  "click #lstBox1 > option": function(e){            
        var selectedOpts = $('#lstBox1 option:selected');
        if (selectedOpts.length == 0) {
            alert("Nothing to move.");
            e.preventDefault();
        }
        $('#lstBox2').append($(selectedOpts).clone());
        $(selectedOpts).remove();
        e.preventDefault();
        var text = $(e.target).text();            
        var result = this.data.filter(function (obj) {
            return obj.columnsexpo === text;
        });
        if (_.isEmpty(result)) {
            this.data.push({columnsexpo: text, placeholder: true });
            this.tab.handsontable("loadData", this.data);
            console.log(this.data);
        }
    },
  "click #lstBox2 > option": function(e){
        var selectedOpts = $('#lstBox2 option:selected');            
        $('#lstBox1').append($(selectedOpts).clone());
        $(selectedOpts).remove();
        e.preventDefault();
        var text = $(e.target).text();
       // console.log(text);
        var result = this.data.filter(function (obj) {
            return obj.columnsexpo === text;
        });

            this.data.pop({ columnsexpo: text, placeholder: true });
            this.tab.handsontable("loadData", this.data);
            console.log(this.data);

    },

1 Ответ

0 голосов
/ 18 января 2019

Пытался воссоздать некрасивую копию вашего кода.

Что мой код делает, на button click он получает span element, который был clicked.

Этот элемент затем сохраняется внутри variable and removed from the left side div.

Все text data in span, присутствующие в right side div, берутся и хранятся в array.

Текст selected span из left div сравнивается с текстом, присутствующим во всех spans в right div.

Если совпадение найдено, возникает предупреждение. Переменная, в которой хранилась left div span, затем равна от appended до right side div.

    var tomove;
    var selected;
    $('span').click(function(){tomove=$(this).text();selected=$(this)})
    $("button").click(function(){

selected.remove();
var t=$('#right > span');
var str=$(t).text().toString();
var arr=str.split('');
   var txt=$(selected).text().toString();
console.log(txt)

    if(arr.includes(txt))
    {
        alert("Duplicates aren't allowed!")
    }
else
{  $("#right").append(selected);}

  

    })
    
 div{

            border-color: blue;
            border-style: solid;
            border-width: 1px;
        }
        span
        {
            border-color:green;
            border-style: solid;
            border-width: 1px;
        }
        #right
        {
            margin-left:100px;
        }
     
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script
  src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
  integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E="
  crossorigin="anonymous"></script>
    
       
</head>
<body id="body">
    <div id="left">
<span>a</span><br>
<span>s</span><br>
<span>d</span><br>
<span>f</span><br>
<span>g</span><br>

    </div>
    <div id="right">
            <span>e</span><br>
            <span>r</span><br>
            <span>g</span><br>
            <span>w</span><br>
            <span>g</span><br>

    </div>
    <button id="move">Move</button>
    
   </body>
   
</html>
...