Обнаружение “значения” входного текстового поля после keydown события в текстовом поле?

Неправильно сказать, что каждый - лучший выбор, чем другой (или обоим не дали бы их собственную цель в спецификации). Может даже стоить отметить, что StackOverflow делает широкое применение единиц пкс. Это не плохой выбор, Spoike сказали, что это было.

Определение единиц

  • пкс является абсолютной единицей измерения (как в , pt, или cm), который также, оказывается, 1/96 в единица (больше на почему позже). Поскольку это - абсолютное измерение, это может использоваться любое время, Вы хотите определить что-то, чтобы быть конкретным размером, вместо того, чтобы быть пропорциональными чему-то еще как размер окна браузера или размера шрифта.

    Как все другие абсолютные единицы, пкс единицы не масштабируются согласно ширине окна браузера. Таким образом, если Ваш весь дизайн страницы будет использовать абсолютные единицы такой в качестве пкс , а не % , то он не адаптируется к ширине браузера. Это не по сути хорошо или плохо, просто выбор, который разработчик должен сделать между соблюдением точного размера и быть негибким по сравнению с протяжением, но в процессе, не придерживаясь точного размера. Это было бы типично, чтобы сайт имел соединение фиксированного размера и объектов гибкого размера.

    элементы Фиксированного размера часто должны включаться в страницу - такую как рекламные баннеры, логотипы или значки. Это гарантирует, чтобы Вам почти всегда были нужны по крайней мере приблизительно основанные на пкс измерения в дизайне. Изображения, например, будут (по умолчанию) масштабироваться таким образом, что каждый пиксель 1*px* в размере, поэтому если Вы разработаете на основе изображения, то Вам будет нужно пкс единицы. Это также очень полезно для точной калибровки шрифта, и для ширины рамки, где должный к округлению его имеет большую часть смысла использовать пкс единицы для большинства экранов.

    Все абсолютные измерения твердо связаны друг с другом; то есть, 1 дюйм всегда 96 пкс , так же, как [1 113], 1 дюйм всегда 72 ПБ . (Обратите внимание, что 1 дюйм почти никогда не является на самом деле медосмотром дюйм при разговоре об основанных на экране медиа). Все абсолютные измерения принимают номинальное разрешение экрана 96 пкс/дюйм и номинальное расстояние просмотра настольного монитора, и на таком экране один , пкс будет равен одному физический , пиксель на экране и одном в [1 120] будет равен 96 физическим пикселям. На экранах, которые значительно отличаются или по плотности пикселей или по расстоянию просмотра, или если пользователь масштабировал страницу с помощью функции масштабирования браузера, , пкс больше не будет обязательно касаться физических пикселей.

  • их не абсолютная единица - это - единица, которая является относительно в настоящее время выбираемого размера шрифта. Если Вы не переопределили стиль шрифта путем установки размера шрифта с абсолютной единицей (такой как [1 122] пкс или pt), это будет затронуто выбором шрифтов в браузере пользователя или ОС, если они сделали один, таким образом, не имеет смысла использовать их в качестве общей единицы длины кроме того, где Вы конкретно хотите, чтобы это масштабировалось, поскольку размер шрифта масштабируется.

    Использование их , когда Вы конкретно хотите, чтобы размер чего-то зависел от размера текущего шрифта.

  • % является также относительной единицей, в этом случае, или относительно высоты или относительно ширины родительского элемента. Они - хорошая альтернатива [1 125] пкс единицы для вещей как общая ширина дизайна, если Ваш дизайн не полагается на определенные размеры пикселя для установки его размера.

    Используя [1 126] % единицы в Вашем дизайне позволяют Вашему дизайну адаптироваться к ширине экрана/устройства, тогда как с помощью абсолютной единицы такой в качестве [1 127] пкс не делает.

21
задан rawrrrrrrrr 27 August 2009 в 01:55
поделиться

3 ответа

Обработчик событий видит содержимое только перед применением изменения, потому что события mousedown и input дают вам возможность заблокировать событие раньше он попадает в поле.

Вы можете обойти это ограничение, предоставив браузеру возможность обновить содержимое поля до получения его значения - самый простой способ - использовать небольшой тайм-аут перед проверкой значения.

Минимум Пример:

<input id="e"
    onkeydown="window.setTimeout( function(){ alert(e.value) }, 1)"
    type="text" value="cow" />

Это устанавливает тайм-аут в 1 мс, который должен произойти после того, как обработчики нажатия и нажатия клавиши позволят элементу управления изменить свое значение. Если ваш монитор обновляется со скоростью 60 кадров в секунду, тогда у вас есть 16 мс пространства для маневра, прежде чем он отстает на 2 кадра.


Более полный пример (который не полагается на именованный доступ к объекту Window будет выглядеть например:

 var e = document. getElementById ('е'); var out = document.getElementById ('вне'); e.addEventListener ('input', function (event) {window.setTimeout (function () {out.value = event.target.value;}, 1);}); 
   

При запуске приведенного выше фрагмента попробуйте следующее:

  • Поместите курсор в начало и введите
  • Вставьте содержимое в середину текстового поля
  • Выберите кучу текста и введите его для замены
18
ответ дан 29 November 2019 в 21:38
поделиться

События нажатия / нажатия клавиш обрабатываются по-разному в разных браузерах. Простое решение - использовать такую ​​библиотеку, как mootools, которая заставит их вести себя одинаково, обрабатывать распространение и пузырьки и дать вам стандартное «this» в обратном вызове.

0
ответ дан 29 November 2019 в 21:38
поделиться

Насколько мне известно, вы не сможете сделать это с помощью стандартного элемента управления вводом, если не используете свой собственный.

0
ответ дан 29 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: