Не работает indexOf('строка с русскими символами') в Javascript. Решено

 

Проблема: код на Javascript упорно отказывался находить вхождение подстроки в строке. Метод string.indexOf(substring) всегда возвращал -1, что означает отсутствие вхождения.

Работа над ошибкой:

Javascript код заведомо не содержал ошибок. На html странице был элемент управления <select> с несколькими значениями. В зависимости от выбранного значения должно было выдаваться то или иное сообщение.

Html-код элемента управления:

    <select id="chooseCover" name="typeCover">
        <option value="мягкая обложка">мягкая обложка</option>
        <option value="твердая обложка">твердая обложка</option>
        <option value="не требуется">не требуется</option>
    </select>

 

Код Javascript по обработке:

$(document).ready(function () {
    $('#chooseCover').on('change', function () {
        var selectedItem = $(this).val();
        if (selectedItem.indexOf('обложка') >= 0) {
            alert('Yes');
        }
        else {
            alert('No');
        }
    })
});

Решение:

Проблема скрылась на уровне кодировки файлов. Так получилось, что js файл я не создавал в рамках проекта, а скопировал заготовку из репозитория. Кодировка html-файла была UTF-8, а Javascript'а – ANSI. Это можно увидеть, например, попытавшись сохранить файл в блокноте (Notepad) (Рис.1).

Для исправления нужно было привести файлы к одной кодировке. Я пересохранил JS файл в кодировке UTF8 в том же блокноте.

Кодировка при сохранении в блокноте

Кодировка при сохранении в блокноте


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика