Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Блокировка поля формы по нескольким условиям
 
 автор: Black__Hole   (14.07.2009 в 17:59)   письмо автору
 
 

Уважаемые форумчане! Подскажите, пожалуйста, новичку, как быть в следующей ситуации:

Есть форма с переключателями и двумя выпадающими списками.
Надо, чтобы второй выпадающий список блокировался при одновременном выполнении двух условий: определенном значении переключателя и определенном выборе из первого выпадающего списка.
В нижеприведенном примере ситуация, когда второе поле выбора ("Укажите возраст и стаж водителя") должно быть заблокировано наступает при собственнике ТС - Юридическом лице и одновременном месте регистрации ТС - РФ. В примере реализована блокировка только по выбору собственника ТС.
Подскажите, как сделать блокировку по двум условиям и возможно ли "навешивание" на событие onchange нескольких функций?


<script language="JavaScript">
  
   function enterSV(form, value)
    { 
    if (value==2) 
    { 
           form.sv.disabled = true;     
        form.sv.style.backgroundColor = "#EEEEEE";          
                                    
    } 
    else 
    {     form.sv.disabled = false; 
           form.sv.style.backgroundColor = "#FFFFFF";        
                                 
    } 
  }  
  
</script> 
</head>

<body>
<TABLE>
   <TR>
      <TD>Собственник транспортного средства</TD>
      <TD><input type = "radio" name = "face" value="1" checked onclick="enterSV(this.form, 1)">Физическое лицо</TD>
      <td width="30%"><input type = "radio" name = "face" value="2" onclick="enterSV(this.form, 2)">Юридическое лицо</td>
   </TR>
  <TR>
      <TD>Место регистрации транспортного средства</TD>
      <TD><SELECT name="registration">
            <OPTION value="1">Российская Федерация</OPTION>
            <OPTION value="2">Иностранное государство</OPTION>
            <OPTION value="3">Транспортное средство следует к месту регистрации</OPTION>
          </SELECT></TD>
   </TR>
    <tr>
       <td>Укажите возраст и стаж водителя</td>
       <td><SELECT  name="sv">
           <OPTION value=1.7>возраст до 22 лет включительно, стаж до 3 лет включительно</OPTION>
           <OPTION value=1.5>возраст более 22 лет, стаж до 3 лет включительно</OPTION>
           <OPTION value=1.3>возраст до 22 лет включительно, стаж свыше 3 лет</OPTION>
           <OPTION value=1>возраст более 22 лет, стаж свыше 3 лет</OPTION>
           </SELECT></td>
   </TR>

  Ответить  
 
 автор: sim5   (14.07.2009 в 18:14)   письмо автору
 
   для: Black__Hole   (14.07.2009 в 17:59)
 

<form action="">
<TABLE> 
   <TR> 
      <TD>Собственник транспортного средства</TD> 
      <TD><input type = "radio" name = "face" value="1" checked onclick="this.form.sv.disabled=false;">Физическое лицо</TD> 
      <td width="30%"><input type = "radio" name = "face" value="2" onclick="if(this.form.registration.value==1) this.form.sv.disabled=true;">Юридическое лицо</td> 
   </TR> 
  <TR> 
      <TD>Место регистрации транспортного средства</TD> 
      <TD><SELECT name="registration"> 
            <OPTION value="1">Российская Федерация</OPTION> 
            <OPTION value="2">Иностранное государство</OPTION> 
            <OPTION value="3">Транспортное средство следует к месту регистрации</OPTION> 
          </SELECT></TD> 
   </TR> 
    <tr> 
       <td>Укажите возраст и стаж водителя</td> 
       <td><SELECT  name="sv"> 
           <OPTION value=1.7>возраст до 22 лет включительно, стаж до 3 лет включительно</OPTION> 
           <OPTION value=1.5>возраст более 22 лет, стаж до 3 лет включительно</OPTION> 
           <OPTION value=1.3>возраст до 22 лет включительно, стаж свыше 3 лет</OPTION> 
           <OPTION value=1>возраст более 22 лет, стаж свыше 3 лет</OPTION> 
           </SELECT></td> 
   </TR>
 </TABLE>  
</form>

PS. Спискам не мешало бы добавить опшены "Выберите....".

  Ответить  
 
 автор: Trianon   (14.07.2009 в 18:35)   письмо автору
 
   для: sim5   (14.07.2009 в 18:14)
 

<OPTION value=1.7>возраст до 22 лет включительно, стаж до 3 лет включительно</OPTION>
<OPTION value=1.5>возраст более 22 лет, стаж до 3 лет включительно</OPTION>
<OPTION value=1.3>возраст до 22 лет включительно, стаж свыше 3 лет</OPTION>
<OPTION value=1>возраст более 22 лет, стаж свыше 3 лет</OPTION>


Вот за такое usability нужно рвать яйца. Это же два ортогональных параметра - возраст и стаж.

PS. Да, я знаю как устроены тарифы Осаго. Я не об этом.

  Ответить  
 
 автор: sim5   (14.07.2009 в 18:42)   письмо автору
 
   для: Trianon   (14.07.2009 в 18:35)
 

А я тут при чем?

  Ответить  
 
 автор: Trianon   (14.07.2009 в 18:49)   письмо автору
 
   для: sim5   (14.07.2009 в 18:42)
 

Относится, само собой, к автору SELECT'а

  Ответить  
 
 автор: sim5   (14.07.2009 в 18:51)   письмо автору
 
   для: Trianon   (14.07.2009 в 18:49)
 

Ах вон оно что, а мои значит могли чисто случайно пострадать? :)

  Ответить  
 
 автор: Trianon   (14.07.2009 в 18:58)   письмо автору
 
   для: sim5   (14.07.2009 в 18:51)
 

Запросто.

  Ответить  
 
 автор: Black__Hole   (14.07.2009 в 19:59)   письмо автору
 
   для: sim5   (14.07.2009 в 18:14)
 

А не работает так, чтобы блокировка была только в случае выбора Юр.лица и РФ.. :(
Уточню: не работает таким образом, чтобы при on-line перемене места регистрации блокировка шла только для варианта Юр.лицо+РФ

P.S. А зачем опшены "Выберите"? Тогда придется проверять, сделал ли пользователь выбор..

  Ответить  
 
 автор: sim5   (14.07.2009 в 20:06)   письмо автору
 
   для: Black__Hole   (14.07.2009 в 19:59)
 

Ну что вы ерунду порете? Юр.лица у вас радиокнопка, а РФ первый опшен списка, именно при этих условиях и не доступен список второй.
PS. А нет, вы всмысле о выборе по селекту. Добавьте так:
<SELECT name="registration" onchange="if(this.form.face[1].checked && this.value==1) this.form.sv.disabled=true; else this.form.sv.disabled=false;">

Зачем добавлять? Во-первых пользователь должен знать, что от него хотят. Ну хотя бы по умолчанию выберите опшены списков. А что проверять? Только на сервере, а на клиенте не требуется, если вы не проверяете форму перед отправкой.

  Ответить  
 
 автор: Black__Hole   (14.07.2009 в 23:35)   письмо автору
 
   для: sim5   (14.07.2009 в 20:06)
 

Сердечно благодарю! Все прекрасно работает!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования