JS в IE и Firefox - разные результаты

Klaus

SEO Cthulhu
JS в IE и Firefox - разные результаты

PHP:
<script>
<!--
function check() {
   if (form.aaa.checked) {
      document.getElementById("aaa").checked=false; 
   } 
   else {
      document.getElementById("bbb").value=0;
   }
}
//-->
</script>

<form name="form" action="test.php" method="post"> 
<input type="hidden" name="bbb" value=1>
<input type="Checkbox" name="aaa">

<input type="submit" value="GO" onclick="check();">
</form>
в IE все работает как и предполагалось, в отличии от Firefox где мы имеем bbb=1 всегда, плюс aaa=on в зависимости от чекета.

В чем проблема?
Как добиться работоспособности скрипта для всех клиентов?

p.s. в других клиентах пока не проверял ввиду их отсутствия.
 

Найч

Алгоритмик :-)
Предположение. У тебя обращение по ИД (getElementById), а в форме элементы не имеют ИД, только имена. Попробуй либо дать им ИД, либо обратиться GetElementsByName('bbb')[0]
 

Bocha

Guest
Автор оригинала: Найч
Предположение. У тебя обращение по ИД (getElementById), а в форме элементы не имеют ИД, только имена. Попробуй либо дать им ИД, либо обратиться GetElementsByName('bbb')[0]
Почти все верно. небольшое уточнение. Для мозилы нужно давать id, а для IE имя. Поэтому должно присутствовать и то и другое с одиноковым значением.
 

Найч

Алгоритмик :-)
Bocha
А, может, верно следующее: ИЕ в случае отсутствия ИД не по правилам смотрит на имя?
 

гоша

Guest
function check() {
if (form.aaa.checked) {

что есть form в данном случае?
 

Bocha

Guest
Автор оригинала: Найч
Bocha
А, может, верно следующее: ИЕ в случае отсутствия ИД не по правилам смотрит на имя?
Может, но я уже не раз наталкивался, что для в случае отсутствия name IE ничего не смотрит
 

Klaus

SEO Cthulhu
Найч
добавка ID ничего не меняет(в данном случае),
а GetElementsByName - вообще перестает работать.

гоша
form.aaa.checked
имя_формы.имя_элемента.свойство

to all
замена getElementById на document.имя_формы.имя_элемента.свойство тоже облегчения не приносит - работает только в IE.

Поясню, зачем мне это надо, возможно есть более правильное решение:
Есть скрипт, кодированный разработчиком, который, к сожалению, не внес проверку на отсутствие переменных. Т.е. если checkbox не отмечен, то переменной нет. Это нормально для первого post'a, но если пользователь сначала отметив chekbox, потом его дизаблит, то значение остается старым, а должно бы обнуляться.
Можно конечно сменить checkbox на select, но тогда теряется usability проекта.
Поэтому решили сделать поле hiden, где и менять значение, в зависимости от чекеда в checkbox'e.
 

гоша

Guest
Klaus

function check() {
if (form.aaa.checked) {

я повторю вопрос: что символизирует переменная "form" в данном контексте? (хинт: Tools-Javascript console)
 

Klaus

SEO Cthulhu
гоша
мдас.. сорри.. ведь ты не просто спросил...
замена form.aaa.checked на document.form.aaa.checked - и firefox заработал.

to all
второй вопрос остается в силе - есть ли более правильное решение?
 

гоша

Guest
по второму вопросу

<input type="hidden" name="aaa" value=0>
<input type="checkbox" name="aaa" value=1>

яваскрипт не нужен
 

Klaus

SEO Cthulhu
гоша
:))
вот спасибо тебе огромное!!
чувствовал ведь, что рою там, где надо полить..

-~{}~ 26.02.04 18:54:

гоша
упс.. поспешил с выводами..
в php все ок, а вот с cgi проблема:
или я глючу или у них там все по другому:
скрипт(perl) в случае чекед получает оба значения и '0' и '1'..
вот такая вот петрушка.. :(
 
Сверху