Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с getElementsByName - Help! (https://javascript.ru/forum/dom-window/25624-problema-s-getelementsbyname-help.html)

lamer 10.02.2012 19:05

Проблема с getElementsByName - Help!
 
И снова здравствуйте)
Столкнулся с проблемой, не работает getElementsByName, а реализовать по средствам getElementById структура сайта не позволяет. Подскажите плиз, что я делаю не так ?

<html>

<head>
<script type="text/javascript">
function logIn() {
var l = document.getElementsByName("login");
var p = document.getElementsByName("pass");
if ((l.value=="") || (p.value==""))
{alert("Заполните поля.");return false;}
else
{alert("Ошибка.");return false;}
}
</script>
</head>

<body>
<input id="login" name="login" type="text">
<input id="pass" name="pass" type="password">
<input type="button" value="Login" onclick="logIn()">
</body>

</html>


т.е. мне нужно привязать функцию проверки заполнения полей по средствам getElementsByName, это легко можно сделать с помощью getElementById но мне этот вариант не подходит, нужна привязка к name="login" и name="pass"
Подскажите что я делаю не так ?

nyols 10.02.2012 19:18

var l = document.getElementsByName("login")*!*[0]*/!*;
var p = document.getElementsByName("pass")*!*[0]*/!*;

lamer 10.02.2012 19:32

Цитата:

Сообщение от nyols (Сообщение 156600)
var l = document.getElementsByName("login")*!*[0]*/!*;
var p = document.getElementsByName("pass")*!*[0]*/!*;

Ура работает :dance:
Только не совсем понятно что такое [0] ?

Seva1986 10.02.2012 19:48

Цитата:

Сообщение от lamer
Только не совсем понятно что такое [0] ?

превый элемент в коллекции которую возвращает метод getElementsByName() нумерация с нуля начинаеться.
без индекса, в данном случае нуля, вернётся не элемент а вся колекция (типа масив) элементов содержащих соответсвующий атрибут name.

lamer 10.02.2012 19:56

Цитата:

Сообщение от Seva1986 (Сообщение 156607)
превый элемент в коллекции которую возвращает метод getElementsByName() нумерация с нуля начинаеться.
без индекса, в данном случае нуля, вернётся не элемент а вся колекция (типа масив) элементов содержащих соответсвующий атрибут name.

Я беру шаблон и привязываю к нему этот скрипт на проверку заполнения поля, но в шаблоне не работает он :(
Видимо это из-за номера элемента, я ставлю [0]
Как узнать или посчитать какой именно это номер элемента чтоб в [] указать правильную цифру ?

Seva1986 10.02.2012 21:37

Цитата:

Сообщение от lamer
Как узнать или посчитать какой именно это номер элемента чтоб в [] указать правильную цифру ?

в дом модели с верху документа по порядку. только не все подряд а только те что с неймом нужным.

Seva1986 10.02.2012 21:45

А что не работает?
<!DOCTYPE HTML>
<html lang="ru">
<head>
    <meta charset="UTF-8"/>
    <title></title>
    <script type="text/javascript">
        function logIn() {
            var l = document.getElementsByName("login")[0];
            var p = document.getElementsByName("pass")[0];

            if ((l.value == "") || (p.value == "")) {
                alert("Заполните поля.");
                return false;
            }
            else {
                alert("Ошибка.");
                return false;
            }
        }
    </script>
</head>

<body>
<input id="login" name="login" type="text">
<input id="pass" name="pass" type="password">
<input type="button" value="Login" onclick="logIn()">
</body>

</html>

lamer 11.02.2012 15:29

Цитата:

Сообщение от Seva1986 (Сообщение 156631)
в дом модели с верху документа по порядку. только не все подряд а только те что с неймом нужным.

Все работает в моем примере, просто подобный скрипт мне нужно вставлять в разные шаблоны, а там много разных форм и т.д. вот я не могу понять как мне определять что нужно писать в [] тут ?
Вот я открываю свой шаблон смотрю на код, как мне определить какой номер элемента в DOM модели ?

П.С. Сорри за туфтографию =)

KingStar 12.02.2012 16:35

а почему тебе не позваляет использовать getElementById структура, если у тебя вполне нормально указаны id="login" и id="pass" ??? Что за стопор у тебя???

Честно, не вижу никакой загвоздки

lamer 12.02.2012 16:51

Цитата:

Сообщение от KingStar (Сообщение 156942)
а почему тебе не позваляет использовать getElementById структура, если у тебя вполне нормально указаны id="login" и id="pass" ??? Что за стопор у тебя???

Честно, не вижу никакой загвоздки

Я отписал все выше, видимо вы не внимательно читали.

Цитата:

Сообщение от lamer (Сообщение 156744)
просто подобный скрипт мне нужно вставлять в разные шаблоны, а там много разных форм и т.д.

Вопрос остается, подскажите плиз как определить номер элемента в DOM модели ?

Seva1986 12.02.2012 17:20

Цитата:

Сообщение от lamer
Вопрос остается, подскажите плиз как определить номер элемента в DOM модели ?

Я ведь написал
Цитата:

Сообщение от Seva1986
в дом модели с верху документа по порядку. только не все подряд а только те что с неймом нужным.


dmitriymar 12.02.2012 17:46

Цитата:

Сообщение от lamer
средствам getElementById структура сайта не позволяет

id одинаковые чтоль?:blink: id должен быть уникальным

lamer 14.02.2012 04:07

Цитата:

Сообщение от Seva1986 (Сообщение 156953)
Я ведь написал
в дом модели с верху документа по порядку. только не все подряд а только те что с неймом нужным.

Я пробовал брать шаблон и с верху вниз считать по порядку те что с наме, в итоге не чего не работало.
Их так нужно считать ? Опишите подробнее плиз этот момент.

<html>

<head>
<script type="text/javascript">
function logIn() {
var l = document.getElementsByName("login")[0];
var p = document.getElementsByName("pass")[0];
if ((l.value=="") || (p.value==""))
{alert("Заполните поля.");return false;}
else
{alert("Ошибка.");return false;}
}
</script>
</head>

<body>
</br>
<input id="login1" name="login1" type="text">
<input id="pass1" name="pass1" type="password">
</br>
<input id="login2" name="login2" type="text">
<input id="pass2" name="pass2" type="password">
</br>
<input id="login3" name="login3" type="text">
<input id="pass3" name="pass3" type="password">
</br>
<input id="login4" name="login4" type="text">
<input id="pass4" name="pass4" type="password">
</br>
<input id="login" name="login" type="text">				<! Где бы я не ставил все равно скрипт работает с параметром [0] >
<input id="pass" name="pass" type="password">			<! Хотя неймов тут много>
<input type="button" value="Login" onclick="logIn()">
</body>

</html>


Цитата:

Сообщение от dmitriymar (Сообщение 156959)
id одинаковые чтоль?:blink: id должен быть уникальным

id в шаблоне идут уникальные, просто они не постоянные, а генерируются скриптом, т.е. обновил страницу id формы стал таким: id="Hgy:07HJbff" затем ещё рас обновил id стал таким: id="Hiubm:05gb" и т.д. они не постоянные а генерируются скриптом.

ЗЫ: Люди прошу не задавайте массу вопросов не по теме, а помогите кто может, заранее спасибо.

GuardCat 14.02.2012 14:01

А почему имена разные? Вам возвращается список всех элементов с именем login. У вас такой на странице один и доступен по [0]. login1 это другое имя.

Используйте сложные имена и идентификация упростится.

poorking 14.02.2012 14:09

Цитата:

Сообщение от lamer
т.е. обновил страницу id формы стал таким: id="Hgy:07HJbff" затем ещё рас обновил id стал таким: id="Hiubm:05gb" и т.д.

Ну так сделайте
<input id = "<?php echo $dynamic_id; ?>" />

<script type = "text/javascript">
   var id = "<?php echo $dynamic_id; ?>";
   var input = document.getElementById(id);
</script>

Seva1986 14.02.2012 16:35

Цитата:

Сообщение от lamer
Опишите подробнее плиз этот момент.

ну в даном примере у всех неймов индекс [0] потому что все неймы разные

KingStar 14.03.2012 16:12

Соглашусь с poorking - передай значение ID в JS и используй getElementsById

lamer 16.03.2012 01:48

Цитата:

Сообщение от KingStar (Сообщение 163123)
Соглашусь с poorking - передай значение ID в JS и используй getElementsById

Да честно говоря не совсем ясно как реализовать.
Можно живой пример в HTML ?
Дабы посмотреть как работает.

KingStar 21.03.2012 13:34

тип вот так:

<?php

echo "<input type='text' id='".$gen_login."' name='login' />";
echo "<input type='text' id='".$gen_password."' name='password' />";


echo "<script type='text/javascript'>

var id_login = '".$gen_login."';
var id_password = '".$gen_password."';

var input_login = document.getElementById(id_login);
var input_password = document.getElementById(id_password);


alert(input_login+' - '+input_password);


</script>";


?>


JS повесить на событие, и будет тебе счастье

работоспособность не проверял, писал на вскидку


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