Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2020, 14:35
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Получить поле инпута
Привет. Есть инпут
<input class="form-control" type="text" name="mykal[]" value=""/>

Нужно вставить значение в этот инпут с таким именем "mykal[]". Как его получить?
document.forms['my-recept'].mykal[].value
Так не работает(.
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2020, 16:17
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 993

document.forms['my-recept']['mykal[]'].value


А зачем такое имя name="mykal[]"?
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2020, 16:31
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Спасибо.Сейчас попробую. А такое имя нужно,когда нужны несколько одинаковых полей.
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2020, 16:45
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Нет,так не работает
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2020, 16:53
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 993

Так их несколько? А в какое именно надо вставлять?
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2020, 17:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

document.forms['my-recept']['mykal\[\]'].value


Для множества элементов так не получится.
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2020, 18:23
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Сообщение от laimas Посмотреть сообщение
document.forms['my-recept']['mykal\[\]'].value


Для множества элементов так не получится.
Да,я уже понял(. Придётся подругому решать.
Ответить с цитированием
  #8 (permalink)  
Старый 17.04.2020, 18:24
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Сообщение от voraa
Так их несколько? А в какое именно надо вставлять?
В каждое по очереди.
Ответить с цитированием
  #9 (permalink)  
Старый 18.04.2020, 02:36
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,709

Сообщение от laimas
document.forms['my-recept']['mykal\[\]'].value
Зачем тут экранирование? Разве квадратные скобки — специальные символы в строке?
alert("mykal\[\]" === "mykal[]"); // true


Сообщение от laimas
Для множества элементов так не получится.
Почему?
Сообщение от https://www.w3.org/TR/html53/sec-forms.html#the-form-element
interface HTMLFormElement : HTMLElement {
  /* в частности объявлено также... */
  [SameObject] readonly attribute HTMLFormControlsCollection elements;
  getter Element (unsigned long index);
  getter (RadioNodeList or Element) (DOMString name);
};


[...]

form[name]
Returns the form control (or, if there are several, a RadioNodeList of the form controls) in the form with the given ID or name (excluding image buttons for historical reasons); or, if there are none, returns the img element with the given ID. [...] If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.


Сообщение от voraa
А зачем такое имя name="mykal[]"?
Сообщение от ureech
А такое имя нужно,когда нужны несколько одинаковых полей.
Вы можете называть как угодно, в случае, когда будет только одно поле, document.forms['my-recept']['mykal'] возвратит один элемент формы (класс Element). В случае, когда полей несколько — будет возвращён список элементов формы (класс RadioNodeList)

Сообщение от ureech
Нет,так не работает
Сообщение от laimas
Для множества элементов так не получится.
Если вы хотите обращаться к элементам так — document.forms["my-recept"]["mykal"], то вам следует обработать оба из возможных возвращаемых вариантов... Но вам рекомендую не использовать такое обращение!
<form action="#" name="my-recept">
	<input class="form-control" name="mykal">
	<input class="form-control" name="mykal">
</form>

<script>

	const ref = document.forms["my-recept"]["mykal"];
	
	switch(true) {
		case ref instanceof RadioNodeList:
			for(const element of ref) {
				element.value = "5";
			}
			break;
		case ref instanceof Element:
			ref.value = "5";
			break;
	}
	
</script>


Я вам рекомендую использовать document.querySelectorAll, тогда у вас будет одинаковая обработка отсутствия элемента, одного элемента и множества элементов...
<form action="#" name="my-recept">
	<input class="form-control" name="mykal">
	<input class="form-control" name="mykal">
</form>

<script>

	for(const element of document.querySelectorAll("form[name='my-recept'] [name='mykal']")) {
		element.value = "5";
	}
	
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 18.04.2020, 10:43
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 440

Malleys,
Благодарю за содержательный ответ.Весьма позновательно. Правда я пошёл другим,не самым "лёгким" путём и теперь наверное придётся всё переделать, так как этот вариант решает ряд возникших вопросов.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение инпута vano_mig Events/DOM/Window 6 22.09.2017 01:57
JQuery Autocomplete Как получить данные, вводимые пользователем в поле? decadent42 jQuery 7 30.10.2015 21:55
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Ошибка в не большом скрипте modestes jQuery 2 08.03.2013 03:28
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59