Помогите с JavaScript

Edson

Новичок
Помогите с JavaScript

Есть такой код

<form action="index.php" method="POST" name="myForm">
<input type="checkbox" name="goodsIDS[]" value="1">
<input type="checkbox" name="goodsIDS[]" value="2">
<input type="checkbox" name="goodsIDS[]" value="3">
<input type="submit" value="text" onClick="invalidCompare ()">
</form>


Функция -

function invalidCompare () {
if (!document.myForm.goodsIDS[].checked) {
alert('Warning');
}

}

Никакого сообщения не выводится. Помогите...
 

alexhemp

Новичок
Edson

Ключ массива можно писать через точку если он не содержит управляющих конструкций. Это первое.

Второе - тебе нужно обработать все элементы имеющие имя "goodsIDS[]". Это можно сделать через document.getElementsByName и цикл.
 

Edson

Новичок
как можно определить количество элементов в массиве?

Написал вот такую функцию, но она тоже не хочет работать.

function invalidCompare() {
var errors=0;
var name=document.getElementsByName("goodsIDS[]");

var id1;

for (i<0; i<=count(name);i++) {
id1=eval("name+i");
if (document.getElementById(id1).checked) errors=1;
}


if (!errors) {
alert("Error");
return false;
}
else {
return true;
}
}
 

Edson

Новичок
Просто не рабоет. помогите в чём ошибка, а то я не силён в JS
 

Edson

Новичок
Автор оригинала: Frol
1. что такое count() ?
2. что там делает eval() ?
count() - чтоб определить количество элементов в массиве.
eval() - теперь у тебя в id1 - идентификатор нужного

В JS такого нет? А как это будет в JS ?
 

Frol

Новичок
может сначала выучишь основы JS, а потом будешь писать на нем?
 

Edson

Новичок
Автор оригинала: Frol
конкретно в данном -- да.
ну так помоги... как мне обойти массив checkbox?

<input type="checkbox" name="goodsIDS[]" value=1>
<input type="checkbox" name="goodsIDS[]" value=2>
<input type="checkbox" name="goodsIDS[]" value=3>
 

alexhemp

Новичок
у любого массива есть свойство length

сделай что-то вроде
var errors = 0;
var name=document.getElementsByName("goodsIDS[]");

for (i = 0; i < name.length; i++) {
if (name.checked) errors++;
}

Что-то в этом духе..
 

Edson

Новичок
Автор оригинала: alexhemp
у любого массива есть свойство length

сделай что-то вроде
var errors = 0;
var name=document.getElementsByName("goodsIDS[]");

for (i = 0; i < name.length; i++) {
if (name.checked) errors++;
}

Что-то в этом духе..

не помогло...

что у меня неправильно.. Может я что-то неправильно делаю...

Подключаю скприпты -
<script language="JavaScript" src="js/script.js"></script>

Форма -

<form action="index.php" method="POST">
<input type="submit" value="Сравнить!" onClick="invalidCompare();" >
<input type="checkbox" name="goodsIDS[]" value="35">
<input type="checkbox" name="goodsIDS[]" value="34" >
<input type="checkbox" name="goodsIDS[]" value="32">

Функцию JS -

function invalidCompare() {
var errors=0;
var name=document.getElementsByName("goodsIDS[]");

for (i<0; i<=name.legth;i++) {
if (document.getElementById(name).checked) errors++;
}


if (!errors) {
alert("Error");
return false;
}
else {
return true;
}
}

Почему не работает?
 

Edson

Новичок
Автор оригинала: Frol
хм.
самое место в "Ищу готовое решение".
я прошу подсказать, где у меня ошибка.

Frol

Ты вообще чего-то знаешь или только флудить умееешь? Я задал вполне конкретный вопрос и ты мне дал 7 ответов, которые никакой полезной информации не несут...
 

Frol

Новичок
ты не знаешь основ.
и чем я могу помочь?
либо научить тебя основам, либо написать за тебя скрипт.
ни того, ни другого я делать не буду.
 

Edson

Новичок
Автор оригинала: Frol
ты не знаешь основ.
и чем я могу помочь?
либо научить тебя основам, либо написать за тебя скрипт.
ни того, ни другого я делать не буду.
тогда лучше не мешай...
 
Сверху