Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > submit.disabled при загрузке страницы


Автор: Ord 19.10.2007, 14:19
Приветствую уважаемые коллеги, продолжая экспериментировать с JS решил сделать небольшую голосовалку на своём сайте (на PHP), с маленькими элементами JS. Решил сделать для эксперимента 4 radiobutton и 1 submit, Идея состоит в том, чтобы кнопка Сабмита была неактивна, пока я не выберу любой пункт голосования

сделал примерно так.

1. При загрузке страницы вызываю функцию в теге body
Код

<body ... onload="butt_disable();">


2. написал функцию, примерно следующего содержания, пока для 1 элемента Radiobutton для теста:
Код

Function butt_disable()
{
votebutton = document.GetElementById("subbutton");
radiobutton = document.GetElementById("radio1");
if (radiobutton == checked)
{
votebutton.disabled = false;
}
else
{
votebutton.disabled = true;
}
}


3. Ну и соответственно формы:
Код


<form name="Poll" method="post" action="">
<input name="radio" type="radio" id="radio1"><br>
<input name="radio" type="radio"><br>
<input name="radio" type="radio"><br>
<input name="radio" type="radio"><br><br>
<input name="submit" id="subbutton" type="submit" value="Отправить">
</form>


Собственно за гвоздка в том, что JS не считает
document.GetElementById("subbutton");
за объект и не присваивает ему свойства disabled.

Уважаемые коллеги не подскажите в чём может быть проблема?

Автор: dsCode 19.10.2007, 14:57
Ord, 

- во-первых, javascript различает регистр (в отличии от PHP (хотя PHP тоже различает в именах переменных, но не в функциях! а javascript - во всем)). Поэтому: getElementById(...), а не GetElementById(...)

- во-вторых, реализация, может быть более простой: сразу в теге пишете disabled="true" (т.е. не надо ничего вызывать в onload), а по клику на радио-баттоны - enabl'ите кнопку: document.getElementById("subbutton").disabled = false;

Автор: Ord 19.10.2007, 15:32
Код

во-первых, javascript различает регистр


Ужас! Спасибо smile

Автор: Ord 19.10.2007, 15:47
Код

<form method="post" action="">
<input name="radio" type="radio" onclick="document.getElementById('subbutton').disabled = false;"> Пункт 1<br>
<input name="radio" type="radio" onclick="document.getElementById('subbutton').disabled = false;"> Пункт 2<br>
<input name="radio" type="radio" onclick="document.getElementById('subbutton').disabled = false;"> Пункт 3<br>
<input name="radio" type="radio" onclick="document.getElementById('subbutton').disabled = false;"> Пункт 4<br><br>
<input name="subbutton" type="submit" value="Отправить" disabled="true">
</form>



Оставлю тут рабочий вариант - может кому пригодится ...

Автор: IAmEternaL 19.10.2007, 17:17
ну а если там будет текстовое поле? ввел значение и нажал энтер
альтернатива
Код

<script type="text/javascript">
var allowFormSubmit = false;
</script>
<form onsubmit="return allowFormSubmit">
...
</form>


да и потом
Код

<input disabled="true">

это вообще откуда?
http://www.w3.org/TR/html4/interact/forms.html#h-17.12
Код

<input disabled>

http://www.w3schools.com/xhtml/xhtml_syntax.asp
Код

<input disabled="disabled" />

Автор: dsCode 19.10.2007, 19:56
IAmEternaL, disabled="disabled" - это альтернатива disabled="true"

Автор: IAmEternaL 19.10.2007, 21:35
вообще - наличие тэга это все, что нужно
напиши ты там хоть disabled="false", все равно элемент будет отключенным, потому не стоит себя обманывать и пользоваться нотацией, которую XHTML предусматривает
selected="selected"
readonly="readonly"
или юзать HTML

Автор: cruelangel 20.10.2007, 04:29
пользователи без поддержки яваскрипт или отключившие его или [ещё 10 причин почему яваскрипт может не заработать] идут лесом?

Автор: ksnk 20.10.2007, 10:02
Цитата(dsCode @  19.10.2007,  14:57 Найти цитируемый пост)
сразу в теге пишете disabled="true"


Цитата(cruelangel @  20.10.2007,  04:29 Найти цитируемый пост)
пользователи без поддержки яваскрипт или отключившие его или [ещё 10 причин почему яваскрипт может не заработать] идут лесом? 


!!!

disabled='true' следует писать в методе onload страницы!
Что-то вроде
Код

function onLoad() {
  document.forms['Poll']['submit'].disabled='true'
}




Автор: IAmEternaL 20.10.2007, 11:35
Цитата(cruelangel @  20.10.2007,  04:29 Найти цитируемый пост)
пользователи без поддержки яваскрипт или отключившие его или [ещё 10 причин почему яваскрипт может не заработать] идут лесом? 


ты издеваешься? а если у чела нет яваскрипта, то как ему форму разлочить, даже еси там сабмит задизейблин?))) бред, таких лолов без яваскрипта единицы, их есть смысл тупо игнорить

Цитата(ksnk @ 20.10.2007,  08:02)
Цитата(dsCode @  19.10.2007,  14:57 Найти цитируемый пост)
сразу в теге пишете disabled="true"


Цитата(cruelangel @  20.10.2007,  04:29 Найти цитируемый пост)
пользователи без поддержки яваскрипт или отключившие его или [ещё 10 причин почему яваскрипт может не заработать] идут лесом? 


!!!

disabled='true' следует писать в методе onload страницы!
Что-то вроде
Код

function onLoad() {
  document.forms['Poll']['submit'].disabled='true'
}

а это зачем?)))) мы ж без яваскрипта работаем!!!)))

в тэге достаточно аттрибута (если говорим о сабмит) а для формы нужна обработка события онсабмит

Автор: dsCode 20.10.2007, 19:53
IAmEternaL, 
Цитата(IAmEternaL @  19.10.2007,  21:35 Найти цитируемый пост)
напиши ты там хоть disabled="false", все равно элемент будет отключенным, потому не стоит себя обманывать и пользоваться нотацией, которую XHTML предусматривает

это и так известно и я себя не обманываю, просто, если известно, что чтобы сделать элемент активным, надо написать disabled = false в скрипте (!), соответственно интуитивно хочется написать disabled = true при оформлении (ну или disabled = "disabled").

ksnk, 
Цитата(ksnk @  20.10.2007,  10:02 Найти цитируемый пост)
disabled='true' следует писать в методе onload страницы!

это к чему?

cruelangel, 
Цитата(cruelangel @  20.10.2007,  04:29 Найти цитируемый пост)
пользователи без поддержки яваскрипт или отключившие его или [ещё 10 причин почему яваскрипт может не заработать] идут лесом?

зачем это писать в разделе о JavaScript? Ладно, я понимаю, в разделе о серверных языках это пишут, когда предлагаетcя проверить на клиенте что-то, но в этом-то разделе ведутся разговоры о js smile 

Автор: ksnk 22.10.2007, 15:08
Цитата(IAmEternaL @  20.10.2007,  11:35 Найти цитируемый пост)
а это зачем?)))) мы ж без яваскрипта работаем!!!)))

в тэге достаточно аттрибута (если говорим о сабмит) а для формы нужна обработка события онсабмит 

disable красиво, наглядно и доходчиво скажет юзеру, что сюда нажимать не надо. А чтобы он не мешал жить тем, у кого JS нету, включать его нужно самим javaScript'ом... Что еще не понятно?
Цитата(dsCode @  20.10.2007,  19:53 Найти цитируемый пост)
это к чему?

К дисциплине работы с атрибутом disabe для кнопки...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)