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


Автор: Aliance 27.8.2004, 14:51
Как сделать блокировку нажатия на кнопку до того момента, пока не будт выбран переключатель (checked) "ДА"
qstn.gif
Добавлено @ 14:57
Код


<script type="text/javascript">
<!--
// Проверка того, что в текстовом поле есть хотя бы один символ
function isNotEmpty(elem) {
   var str = elem.value;
   var re = /.+/;
   if(!str.match(re)) {
       alert("Необходимо заполнить все обязательне поля.");
       setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
       return false;
   } else {
       return true;
   }
}
// Проверка правельного e-mail адреса
function isEMailAddr(elem) {
var str = elem.value;
   var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
   if (!str.match(re)) {
       alert("Проверти формат e-mail адреса.");
       setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
       return false;
   } else {
       return true;
   }
}

function validateForm(form) {
   if (isNotEmpty(form.name)) {
       if (isNotEmpty(form.eMail)) {
           if (isEMailAddr(form.eMail)) {
               return true;
           }
        }
   }
   return false;
}

function focusElement(formName, elemName) {

   var elem = document.forms[formName].elements[elemName];
   elem.focus();
   elem.select();
}
//-->
</SCRIPT>

</HEAD>

<BODY OnLoad="document.registerForm.name.focus()">

<center>
<p><h2>Регистрация</h2></p>
</center>

<form method="GET" action="" name="registerForm">
<TABLE align="center">
<TR>
<TD>Ник:</TD>
<TD><input type="text" size="20" name="name" id="nick" onchange="isNotEmpty(this)" class="button" /></TD>
</TR>
<TR>
<TD>E-mail:</TD>
<TD><input type="text" size="20" name="eMail" id="eMail" onchange="if (isNotEmpty(this)) {isEMailAddr(this)}"
class="button"/></TD>
</TR>
<TR>
<TD>Принимаете
<br>условия?</TD>
<TD><input type="radio" name="accept" id="yes" value="agree" />Да
<br><input type="radio" name="accept" id="no" value="refuse" checked/>Нет</TD>
</TR>
<TR>
<TD align="right"><input type="reset" class="button" /></TD>
<TD><input type="button" name="register" id="confirm" class="button" value="Регистрация" onclick="if (validateForm(this.form)) {this.form.submit()}" /></TD>
</TR>
</TABLE>
</form>



Нужно чтобы при нажатии на <input type="radio" name="accept" id="yes" value="agree" />Да <input type="button" name="register" id="confirm" class="button" value="Регистрация" onclick="if (validateForm(this.form)) {this.form.submit()}" /> разблокировалось, а по умолчанию было заблокированно! Пробовал - выдает ошибку sad.gif
withstupid.gif

Автор: Aliance 27.8.2004, 15:01
Почему не работает такое:
Код

document.RegisterForm.register.disabled = true
if (form.yes.checked) {
document.RegisterForm.register.disabled = false
}

Автор: GoodBoy 27.8.2004, 15:05
у кнопки пропиши атрибут DISABLED:
<input type="button" name="register" id="confirm" DISABLED class="button" value="Регистрация" onclick="if (validateForm(this.form)) {this.form.submit()}">

а у радиокнопки onClick="document.getElementById('confirm').disabled = false;"


Добавлено @ 15:06
Aliance
Да у тебя браузер твоего кода пугается наверное!!!!! NAME и ID разные задавать.....
:-)))))))))))))))

Автор: Aliance 27.8.2004, 15:27
GoodBoy
DISABLED прописывал, не получалось. Но вот у радиокнопки не пробовал, попробую.

ID в МОЕМ коде вообще можно опустить

Автор: GoodBoy 27.8.2004, 15:36
Aliance
Я бы тебе посоветовал следующее: если ты у элемента задаешь и name и id, то задавай их одинаковыми!

Автор: Gold Dragon 27.8.2004, 15:41
Aliance
GoodBoy вот что имел ввиду
Код
...
<TR>
<TD>Принимаете
<br>условия?</TD>
<TD><input type="radio" name="accept" id="yes" value="agree" onClick="document.getElementById('confirm').disabled = false;">Да
<br><input type="radio" name="accept" id="no" value="refuse" checked onClick="document.getElementById('confirm').disabled = true;">Нет</TD>
</TR>
<TR>
<TD align="right"><input type="reset" class="button" /></TD>
<TD><input type="button" name="register" id="confirm" class="button" disabled value="Регистрация" onclick="if (validateForm(this.form)) {this.form.submit()}" /></TD>
</TR>
...


Автор: Aliance 27.8.2004, 20:17
Red Dragon
GoodBoy
Уже нашел другой вариант:
Код

<script type="text/javascript">
function togglePurDec(evt) {
   evt = (evt) ? evt : event;
   var target = (evt.target) ? evt.target : evt.srcElement;
   var block = document.getElementById("confirm");
   if (target.id == "yes") {
       block.style.disabled = "false";
   } else {
       block.style.disabled = "true";
   }
}

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