HTML - Как мне присвоить текстовое значение значению другого атрибута?

Я пытаюсь присвоить значение атрибута HTML text значению атрибута hidden.

Код text:

<input type = "text" name = "number" id = "number" maxlength = "4" onBlur = "myno=this.value; concatno=myno.concat('0001')" />

Я использовал alert, чтобы попробовать вывод значения concatno. Например, если пользователь вводит 1010, то на выходе будет 10100001.

Тогда мой код hidden:

<input type = "hidden" id = "hide" name = "hide" value=concatno>

Я хочу, чтобы мое значение hidden было 1010001, но вместо этого значение стало "concatno". Как мне присвоить значение в моем атрибуте hidden?

Без полного кода будет сложно :(

Jimbot 10.08.2018 11:35

Для этого вам нужен Javascript, вы не можете просто волшебным образом ссылаться на вещи и ожидать, что они будут работать.

BenM 10.08.2018 11:36

@Jimbot на самом деле всего 2 строки кода, я просто тестирую

hatched 10.08.2018 11:36

@hatched хорошо, все было в размытом состоянии, я не понял сначала.

Jimbot 10.08.2018 11:40
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
4
324
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

document.getElementById('hide').value = concatno;

Рабочий фрагмент:

<input type = "text" name = "number" id = "number" maxlength = "4" onkeyup = "var myno = this.value; var concatno = myno.concat('0001'); document.getElementById('hide').value=concatno;" />
<input id = "hide" name = "hide" value=concatno disabled>

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

Я также изменил ваш элемент hidden на disabled, чтобы сделать его визуальным.

Более того, вам следует научиться избегать встроенного JavaScript. Вот как я это сделаю:

document.getElementById('number').addEventListener("keyup", function() {
  document.getElementById('hide').value = this.value.concat('0001');
});
<input type = "text" name = "number" id = "number" maxlength = "4" />
<input id = "hide" name = "hide" value=concatno disabled>

Документация: getElementById

Надеюсь, поможет.

Я удалил DV, но стоит отметить, что проблема возникла не из-за события.

BenM 10.08.2018 11:39

@BenM Я согласен, но мне показалось, что клавиатура здесь более эффективна.

Takit Isy 10.08.2018 11:42

я не уверен, почему, но мое значение становится "concatno"

hatched 10.08.2018 11:49

@hatched, не могу сказать. Вы пробовали оба моих фрагмента?

Takit Isy 10.08.2018 11:56

Проблема в том, что вы никогда не обновляете значение своего элемента #hide. Вам нужно установить его значение внутри привязки вашего события (только что сделал ввод видимым для справки):

<input type = "text" name = "number" id = "number" maxlength = "4" onblur = "var myno = this.value; var concatno=myno.concat('0001'); document.getElementById('hide').value = concatno; console.info(concatno)" />

<input type = "text" id = "hide" name = "hide" value=concatno disabled />

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

Вот пример использования ненавязчивых обработчиков:

document.getElementById('number').addEventListener('blur', function() {
  document.getElementById('hide').value = this.value.concat('0001');
});
<input type = "text" name = "number" id = "number" maxlength = "4" />
<input type = "text" id = "hide" name = "hide" placeholder = "concatno" disabled />

Попробуйте вместо этого использовать имя / идентификатор;

<input type = "text" name = "number" id = "number" maxlength = "4" oninput='hide.value=(this.value + "0001")'  autofocus=''/>
<input type = "hidden" id = "hide" name = "hide" />

без встроенных скриптов:

document.addEventListener('DOMContentLoaded', function() {
  let hide = document.querySelector('#hide');
  document.querySelector('#number').addEventListener('input', function() {
    hide.value = this.value + '0001';
  });
});
<input type = "text" name = "number" id = "number" maxlength = "4" autofocus='' />
<input type = "hidden" id = "hide" name = "hide" />

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