Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   getelementbyid при display:none (https://javascript.ru/forum/dom-window/30575-getelementbyid-pri-display-none.html)

lol4eg 08.08.2012 21:58

getelementbyid при display:none
 
Есть модальное окно, в нем расположена форма регистрации, нужно получить все данные с формы и отправить их потом на обработчик через ajax. Проблема с получением данных с инпутов через getelementbyid, поскольку изначально div где лежит форма имеет свойство display:none.

--------
Пока писал пост, в голову пришла мысль что проблема может быть в в повторяющихся id а не в display:none, поскольку при создании модального окна html копируется...

Как посоветуете решить проблему ?

mullih 08.08.2012 22:09

очистить или изменить id

mullih 08.08.2012 22:10

да и зачем вам id в форме в таком случае, name за глаза

lol4eg 08.08.2012 22:24

var keystring;
        keystring = document.getElementsByName('keystring').value;
        alert(keystring);

пробую таким вот образом получить значение, пишет undefined, блоки побывал по разному размещать, и выше и ниже этого Js

mullih 08.08.2012 22:33

может этот пример вас подвигнет на идеи ))

<!--	<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
-->
<html>
<head>
</head>
<body>
	<div id="mainframe">
		<div class="content">
			<h2>
				Смена пароля.</h2>
			<form>
			<p>
				<b>Ваш логин:</b><br>
				<input name="login" type="text" size="40">
			</p>
			<p>
				<b>Новый пароль:</b><br>
				<input id="pas1" name="password" type="text" size="40">
				<input id="pas2" name="password" type="text" size="40">
			</p>
			<p>
				<input type="submit" value="Изменить">
				<input type="button" onclick='return show();' value="что у нас там">
			</p>
			</form>
		</div>
	</div>
	<script type="text/javascript">
		function show() {
			var keystring;
			keystring = document.getElementsByName('password');
			for (var i = 0; i < keystring.length; i++)
				alert(keystring[i].value);
		}
	</script>
</body>
</html>

lol4eg 09.08.2012 00:28

mullih, навело, помогло, спасибо :) Действительно была проблема из за клонирования формы.

bes 09.08.2012 11:04

Цитата:

Сообщение от lol4eg
keystring = document.getElementsByName('keystring').value;

коллекции - это типа "живых" массивов, поэтому обращение к самим элементам по их индексам в коллекции([0] и т.п.), getElementsByName, getElementsByTagName - коллекции (в данном случае можно догадаться по Elements - мн.число), getElementById - ссылка на сам элемент (не коллекция), поэтому [] не нужно.


mullih, тут есть кнопочка посмотреть [html run] и keystring.length вычисляется каждый раз, поэтому лучше вынести в отдельную переменную.
И первая строчка, чтоб не забыть?
эту проще запомнить http://code.jquery.com/jquery-latest.min.js, хотя и ту не сложно :)

mullih 09.08.2012 11:18

Цитата:

Сообщение от bes (Сообщение 195818)
коллекции - это типа "живых" массивов, поэтому обращение к самим элементам по их индексам в коллекции([0] и т.п.), getElementsByName, getElementsByTagName - коллекции (в данном случае можно догадаться по Elements - мн.число), getElementById - ссылка на сам элемент (не коллекция), поэтому [] не нужно.


mullih, тут есть кнопочка посмотреть [html run] и keystring.length вычисляется каждый раз, поэтому лучше вынести в отдельную переменную.
И первая строчка, чтоб не забыть?
эту проще запомнить http://code.jquery.com/jquery-latest.min.js, хотя и ту не сложно :)

спс, за замечания, согласен полность, а вот всегда использовать последнюю библиотеку не советую, простой пример последний, пока jquery-mobile шел от 1 до 1.1 то поменял пару методов без поддержки предыдущей версии


Часовой пояс GMT +3, время: 08:43.