Как получить длину поля в IE без подсчета текста-заполнителя - PullRequest
4 голосов
/ 10 января 2012

Как я могу отличить JS от длины поля заполнителя от длины содержимого поля в IE. Я пытаюсь определить длину содержимого поля ввода / текстовой области, но IE считает заполнитель текста содержимым.

<input type="text" value="" id="some_field" placeholder="Test" />

jQuery("#some_field").val().length //in Safari/Chrome/FF = 0 in IE7/8 = 4.

1 Ответ

2 голосов
/ 10 января 2012

Хотя атрибут placeholder может не работать в> IE9, он не объясняет, почему браузер произвольно интерпретирует длину атрибута placeholder как длину его значения.

Что еще интереснее, я не смог повторить это поведение в IE7 или IE8.В обоих браузерах я получил длину 0, когда поле было пустым.

Вот скрипт, который я запустил: http://jsfiddle.net/ASmJX/1/

Я также поиграл с методом prop(), чтобы увидеть, если он сделалразница.Я предлагаю вам сделать то же самое.

HTML

<input type="text" value="" id="some_field" placeholder="Test" />

<p>
    <button type="button" id="test_val">Check Length - val()</button>
    <button type="button" id="test_prop">Check Length - prop()</button>
</p>

JS

$('#test_val').on('click', function() {
    alert($("#some_field").val().length);
});

$('#test_prop').on('click', function() {
    alert($("#some_field").prop('value').length);
});

Возможно, это еще не всеВаша проблема, чем несовместимый атрибут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...