Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.10.2018, 11:37
Аспирант
Отправить личное сообщение для garrip91 Посмотреть профиль Найти все сообщения от garrip91
 
Регистрация: 07.10.2018
Сообщений: 75

Улучшение html-страницы путём редактирования составленного JS-синтаксиса
Здравствуйте, уважаемые пользователи сего сайта!


Будучи новичком в изучении языков программирования, я вынужден обратиться к вам всем за помощью следующего характера:

Как html-страницу с автозаполнением формы (в данном случае это автозаполнение происходит при нажатии на кнопку "Заполнить") настроить на автоизменение длины каждой строки ввода (input) в зависимости от посимвольной длины каждого автоматически вводимого "value"?


К примеру, имеется такой синтаксис (обычная html-страница с событием автозаполнения формы при нажатии на кнопки "Заполнить"):

Имя<br>
<input id="name" type="text"><br>
Маил<br>
<input id="email" type="email"><br>
Телефон<br>
<input id="phone" type="tel"><br>
Пароль<br>
<input id="pos_password" type="text"><br>
Повторный пароль<br>
<input id="passwordConfirm" type="text"><br><br>
<button id="rec">Заполнить</button><br>

<script>
rec.onclick=()=>
{
arr=(
prompt(
'Введите данные о себе через запятую \n(имя, мыло, тел, пароль, пароль)',
'Иванов Иван, ivanov@ivan.ru,8(495)1234567,12345678,12345678'
)+'').split(',');
arr.length==5 && document
.querySelectorAll('input#name,input#email,input#ph one,input#pos_password,input#passwordConfirm')
.forEach((a,b)=>a.value=arr[b])};
</script>


Изначально при автозаполнении у меня часть вводимой информации ("value") не была видна, так как стандартная длина поля ввода "input" маленькая, а содержимое некоторых вводимых строк явно превышает эту длину (по количеству символов, как вы уже поняли).

До сего момента я, имея все свои данные (так называемые "value"), которыми автозаполняю форму, был вынужден посимвольно посчитать их и к каждому "input"-у добавить атрибут "size" с соответствующим числовым значением.

У меня возникла мысль о возможности применения нечта вроде АВТОИЗМЕНЕНИЯ ПОЛЯ ВВОДА "INPUT" ПРИ АВТОЗАПОЛНЕНИИ ФОРМЫ.
Недавно мне для достижения этой цели была предложена идея с применением такого свойства объекта JS как "event".


Далее, задав вопрос с похожей формулировкой на проекте "Ответы@Mail.Ru", я получил от одного из пользователей ответ в виде следующего синтаксиса:

oninput=onchange=()=>{
event.target.tagName=='INPUT'&&event.target.type== 'text'&&(event.target.style.width=(event.target.va lue.length+1)+'ex');
}


Данный синтаксис я проверил в деле, он работает, но в своём классическом виде (то есть, при ручном заполнении строк ввода они вроде как изменяют свой размер как надо)... Но дело в том, что я хочу, чтобы это событие срабатывало ИМЕННО при автозаполнении формы путём нажатия на кнопку! Это вообще возможно или нет???


Заранее спасибо всем и каждому, кто откликнулся!!!
Ответить с цитированием
  #2 (permalink)  
Старый 17.10.2018, 11:49
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Возможно, меняй параметр size относительно количества введенных символов.
<input id="name" type="text" size="100">

А вообще можно изменить высоту, сделать их квадратными, влезет больше)
Ответить с цитированием
  #3 (permalink)  
Старый 17.10.2018, 13:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

garrip91,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #4 (permalink)  
Старый 17.10.2018, 13:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от garrip91
oninput=onchange=()=>{
event.target.tagName=='INPUT'&&event.target.type== 'text'&&(event.target.style.width=(event.target.va lue.length+1)+'ex');
}


Данный синтаксис я проверил в деле, он работает, но в своём классическом виде (то есть, при ручном заполнении строк ввода они вроде как изменяют свой размер как надо)... Но дело в том, что я хочу, чтобы это событие срабатывало ИМЕННО при автозаполнении формы путём нажатия на кнопку! Это вообще возможно или нет???
<input type=text id="test">
<script>
var test = document.querySelector("#test");
test.addEventListener("input", function(event) {
event.target.tagName=='INPUT'&&event.target.type== 'text'&&(event.target.style.width=(event.target.value.length+4)+'ex');
});

test.value = "12345678901234567890123456789012345";
  test.dispatchEvent(new Event("input"));
</script>

Последний раз редактировалось Dilettante_Pro, 17.10.2018 в 13:59.
Ответить с цитированием
  #5 (permalink)  
Старый 17.10.2018, 22:09
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,561

Dilettante_Pro, llllllllllllllllllllllllll - некрасиво. Тут надо на самом деле извращаться.) (или использовать monospace, но это не кру)
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 17.10.2018, 23:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Aetae,
Ваше понятие красоты для меня непостижимо.
Слишком просто?
Ответить с цитированием
  #7 (permalink)  
Старый 17.10.2018, 23:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,561

Dilettante_Pro, непропорционально длина растёт.)
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 17.10.2018, 23:48
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<div contenteditable style="border: 1px solid gray; min-width: 150px; display:inline-block; padding: 0 5px;">11</div>

чем не инпут?
Ответить с цитированием
  #9 (permalink)  
Старый 17.10.2018, 23:55
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,561

j0hnik, вставкой.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 18.10.2018, 00:13
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Aetae,
Не уловил мысль..
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсить иcходник страницы после всех манипуляций JS с DOM psixojoker Общие вопросы Javascript 12 27.08.2013 03:44
вывести html код страницы в div djonA Общие вопросы Javascript 3 13.05.2013 20:01
Обмен сообщениями между js загруженной страницы и расширением для браузера prihod Events/DOM/Window 6 11.12.2011 21:51
как привязать ссылку с Html страницы на вынесенный в отдельную папку js скрипт? TIIIMOXAN Общие вопросы Javascript 2 09.11.2009 19:23
Html метки + div + JS boltayka Events/DOM/Window 1 07.09.2009 17:21