jQuery - .length () считает специальные символы как 2? - PullRequest
1 голос
/ 04 апреля 2011

У меня есть эта проблема, когда я использую $('#id').val().length;, она возвращает 2, когда я использую такие символы, как æ, ø и å.

Может кто-нибудь сказать мне, почему и как я могузаставить его работать как (один) символ?

Ответы [ 3 ]

1 голос
/ 04 апреля 2011

Я думаю, что вы использовали дополнительное пространство или одну из сторон этого символа.

<p id="t">&aelig;</p>
$('#t').text().length

Это работает правильно.

1 голос
/ 04 апреля 2011

Я подозреваю, что здесь происходит что-то еще, и это не проблема кодирования.

Я отказываюсь верить, что это проблема jQuery (см. http://jsfiddle.net/KLzYf/ для моего jsutification).

Следующий необработанный HTML сообщит "1":

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<html>
<body>
<input type="text" value="æ" id="test"/>
</body>
<script type="text/javascript">
    alert(document.getElementById("test").value.length);
</script>

</html>

Мне было бы интересно посмотреть некоторые HTML / другие коды. И, к примеру, провести несколько тестов, что из следующего даст вам

alert("æ".length);  //=1?
alert('"' + $('#id').val() + '"'); //are there any spaces/other chars?

Кроме того, если вы просматриваете исходный код в HTML, как будет выглядеть содержимое вашего ввода.

1 голос
/ 04 апреля 2011

попробуйте это:

http://jsfiddle.net/Innuendo108/GXwGG/

Есть 2 символа и написано, что длина = 2

...