Функции соединения / разделения javascript не работают в ms edge

Это странно. У меня есть текстовая область, содержимое которой изменяется путем выбора элементов в списке с помощью флажка для выбора. Если я сниму флажок, этот элемент нужно будет удалить из списка. Итак, у меня есть текстовое поле в моей форме под названием: buildarea (это идентификатор)

Я использую следующий javascript:

function SelectSection(form, id, checked)

// заполняет и удаляет текстовое поле в правой части раздела выбранными переменными

if (checked) {

  var checker = id.substr(5,100)
  $('#buildarea').append(checker);
  $('#buildarea').append("\r\n");
} else {

  var text = id.substr(5,100);
  var lines = $('#buildarea').val().split('\n');
  lines = lines.filter(function(val) {
    if (val.match(text)) return false
    else return true
  })
  $('#buildarea').text(lines.join('\n')).html();

}

программа проверки var просто удаляет ненужный текст в начале выбранного элемента - так что не беспокойтесь об этом. Итак, суть в том, что этот js отлично работает в Chrome, Firefox И IE (11)… но не работает в Microsoft Edge. Список переменных может выглядеть примерно так:

60637; hc_j18

59157; hc_b11_1

59162; hc_b11_2

59172; hc_b11_4

59027; hc_o0k

и если отменить выбор, скажем, третий элемент (заканчивающийся на _2), тогда в трех упомянутых браузерах я получаю:

60637; hc_j18

59157; hc_b11_1

59172; hc_b11_4

59027; hc_o0k

Что идеально. НО в MS Edge я получаю:

60637; hc_j18

59157; hc_b11_1

59172; hc_b11_4

59027; hc_

Итак, хотя третий элемент был удален, имя последнего элемента было обрезано после _ (подчеркивание). Мои навыки работы с javascript не блестящие, но мне интересно, видел ли кто-нибудь еще подобное поведение и как его можно преодолеть?

Большое спасибо

Павел

0
0
317
1

Ответы 1

Вы можете установить некоторые отладчики в функции SelectSection и использовать инструменты разработчика F12 для отладки вашего кода и проверки значения (например: checker и lines).

Согласно вашему описанию, я создаю образец, используя следующий код, он хорошо работает на моей стороне (в браузерах IE 11, Edge и Chrome), обратитесь к нему.

<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="../Scripts/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("input[type='checkbox']").each(function (index, item) {
                $(item).click(function () {
                    var data = [];
                    //get the checked checkbox and get the value.
                    $("input[type='checkbox']:checked").each(function (index, item) {
                       data.push($(item).val());
                    })
                    $('#buildarea').text(data.join('\n')).html();
                });
            });
            $("#btnremoveitem").click(function () {
                var text = "59162;hc_b11_2";
                var lines = $('#buildarea').val().split('\n');
                lines = lines.filter(function (val) {
                    if (val.match(text)) return false
                    else return true
                })
                //get the specific checkbox and set the checked property.
                $("input[type='checkbox']:checked[value='59162;hc_b11_2']").prop('checked', false);

                $('#buildarea').text(lines.join('\n')).html();
            });
        });
    </script>
</head>
<body>
    <input id="Checkbox1" type="checkbox" value="60637;hc_j18" />60637;hc_j18 <br />
    <input id="Checkbox1" type="checkbox" value="59157;hc_b11_1" />59157;hc_b11_1<br />
    <input id="Checkbox1" type="checkbox" value="59162;hc_b11_2" />59162;hc_b11_2<br />
    <input id="Checkbox1" type="checkbox" value="59172;hc_b11_4" />59172;hc_b11_4<br />
    <input id="Checkbox1" type="checkbox" value="59027;hc_o0k" />59027;hc_o0k<br />
    <textarea id="buildarea" rows="10" cols="20"></textarea>
    <input id="btnremoveitem" type="button" value="Remove Item" />
</body>

Результат, как показано ниже:

enter image description here

Спасибо за это, Диллион. Я посмотрю на это, как вы правы, вроде работает. Ясно, что между вашим примером и моим есть различия - я буду использовать F12 и попытаюсь отследить, что происходит ... если я решу свою проблему, я добавлю комментарии ниже.

Paul Snell 02.11.2018 10:41

Другие вопросы по теме