За последние 24 часа нас посетили 15614 программистов и 1557 роботов. Сейчас ищут 849 программистов ...

Валидация формы

Тема в разделе "JavaScript и AJAX", создана пользователем nikemat, 22 ноя 2012.

  1. nikemat

    nikemat Guest

    Здравствуйте.
    Есть форма. В ней много всяких полей. И 4 обязательных поля (фон их подсвечен, если пустые). Остальные скрыты до того, пока 4 обязательных не будут заполнены. И всё вроде бы работает, но: если заполнить сразу последнее обязательное поле, а остальные нет, то отображаются все. Как создать логическое условие для проверки всех полей. Лучше через switch. спасибо
     
  2. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Условие показа всех скрытых полей должно включать все 4 обязательных поля:
    Если условие (поле name пустое (ИЛИ) поле phone пустое (ИЛИ) поле street пустое (ИЛИ) поле dom пустое ) выполняется, то показывать скрытые поля не нужно
    Если же оно не выполняется, то все обязательные поля заполнены и нужно показывать скрытые поля

    Код (Text):
    1.  
    2. function joy()
    3. {
    4.     rr=document.jo;                                      
    5.     if(rr.name.value !='')
    6.     {                
    7.         nameEmpty=false;
    8.         /// действия если поле заполнено
    9.         .....
    10.     }
    11.     else
    12.     {
    13.         nameEmpty   = true;
    14.         /// действия если поле не заполнено
    15.         ....       
    16.     }
    17.     if(rr.phone.value !='')
    18.     {                
    19.         phoneEmpty = false;
    20.         /// действия если поле заполнено
    21.         .....
    22.     }
    23.     else
    24.     {
    25.         phoneEmpty   = true;
    26.         /// действия если поле не заполнено
    27.         ....  
    28.     }
    29.     if(rr.street.value !='')
    30.     {                
    31.         streetEmpty=false;  
    32.         /// действия если поле заполнено
    33.         .....
    34.     }
    35.     else
    36.     {
    37.         streetEmpty   = true;
    38.         /// действия если поле не заполнено
    39.         ....  
    40.     }
    41.     if(rr.dom.value !='')
    42.     {                
    43.         domEmpty=false;
    44.         /// действия если поле заполнено
    45.         .....
    46.     }
    47.     else
    48.     {
    49.         domEmpty   = true;
    50.         /// действия если поле не заполнено
    51.         ....  
    52.     }
    53.     if( nameEmpty || phoneEmpty || streetEmpty || domEmpty)
    54.     {                                        
    55.         // хотя бы одно обязательное поле незаполнено
    56.         /// действия если не все обязательные поля заполнены
    57.         ....  
    58.        
    59.     }
    60.     else
    61.     {
    62.         /// действия если все обязательные поля аполнены
    63.         ....  
    64.     }  
    65. }      
    66.    
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. if(!rr.name.value) {
    2. //Не заполнено...
    3. } 
     
  4. nikemat

    nikemat Guest

    а как это упростить?
    Код (Text):
    1. function joy(){if(rr.email.value!=''){rr.subm.disabled=0;}
    2. else{rr.subm.disabled=1;}
    3. if(rr.name.value!=''){rr.subm.disabled=0;}
    4. else{rr.subm.disabled=1;}
    5. if(rr.street.value!=''){rr.subm.disabled=0;}
    6. else{rr.subm.disabled=1;}
    7. if(rr.dom.value!=''){rr.subm.disabled=0;}
    8. else{rr.subm.disabled=1;}
    9. if(rr.cap.value!=''){rr.subm.disabled=0;}
    10. else{rr.subm.disabled=1;}
    11. if(rr.phone.value!=''){rr.subm.disabled=0;}
    12. else{rr.subm.disabled=1;}
    13. if(rr.dop.checked){document.getElementById('pol');
    14. pol.style.display = 'inline';pol.style.display = 'none';}
    15. else {pol.style.display = 'none';pol.style.display = 'block';}
    16. if(rr.dop.checked){document.getElementById('family');
    17. family.style.display = 'inline';pol.style.display = 'none';}
    18. else {family.style.display = 'none';pol.style.display = 'block';}
    19. if(rr.dop.checked){document.getElementById('phoneh');
    20. phoneh.style.display = 'inline';pol.style.display = 'none';}
    21. else {phoneh.style.display = 'none';pol.style.display = 'block';}
    22. if(rr.dop.checked){document.getElementById('pod');
    23. pod.style.display = 'inline';pol.style.display = 'none';}
    24. else {pod.style.display = 'none';pol.style.display = 'block';}
    25. if(rr.dop.checked){document.getElementById('et');
    26. et.style.display = 'inline';pol.style.display = 'none';}
    27. else {et.style.display = 'none';pol.style.display = 'block';}
    28. if(rr.dop.checked){document.getElementById('dmf');
    29. dmf.style.display = 'inline';pol.style.display = 'none';}
    30. else {dmf.style.display = 'none';pol.style.display = 'block';}
    31. if(rr.dop.checked){document.getElementById('kv');
    32. kv.style.display = 'inline';pol.style.display = 'none';}
    33. else {kv.style.display = 'none';pol.style.display = 'block';}
    34. if(rr.dop.checked){document.getElementById('trn');
    35. trn.style.display = 'inline';pol.style.display = 'none';}
    36. else {trn.style.display = 'none';pol.style.display = 'block';}
    37. if(rr.dop.checked){document.getElementById('ot');
    38. ot.style.display = 'inline';pol.style.display = 'none';}
    39. else {ot.style.display = 'none';pol.style.display = 'block';}
    40. if(rr.dop.checked){document.getElementById('txt');
    41. txt.style.display = 'inline';pol.style.display = 'none';}
    42. else {txt.style.display = 'none';pol.style.display = 'block';}
    43. if(rr.dop.checked){document.getElementById('usb');
    44. usb.style.display = 'inline';pol.style.display = 'none';}
    45. else {usb.style.display = 'none';pol.style.display = 'block';}
    46. if(rr.dop.checked){document.getElementById('printer');
    47. printer.style.display = 'inline';pol.style.display = 'none';}
    48. else {printer.style.display = 'none';pol.style.display = 'block';}
    49. if(rr.dop.checked){document.getElementById('osi');
    50. osi.style.display = 'inline';pol.style.display = 'none';}
    51. else {osi.style.display = 'none';pol.style.display = 'block';}
    52. if(rr.dop.checked){document.getElementById('usl');
    53. usl.style.display = 'inline';pol.style.display = 'none';}
    54. else {usl.style.display = 'none';pol.style.display = 'block';}
    55. if(rr.name.value=='' || rr.street.value=='' || rr.dom.value=='' || rr.cap.value=='' || rr.phone.value=='' || rr.cap.value.length!=4){rr.subm.disabled=1;}else{
    56. if(!rr.dop.checked){rr.dop.checked=true;}else{return false;}}
    кстати, код формирует php
    Код (Text):
    1. <?php
    2. function valid(){
    3. $arr=array('email','name','street','dom','cap','phone');
    4. for($i=0;$i<count($arr);$i++){
    5. $ret.="if(rr.$arr[$i].value!=''){rr.subm.disabled=0;}\nelse{rr.subm.disabled=1;}\n";}
    6.  
    7. $ar=array('pol','family','phoneh','pod','et','dmf','kv','trn','ot','txt','usb','printer','osi','usl');
    8. for($k=0;$k<count($ar);$k++){$ret.="if(rr.dop.checked){document.getElementById('$ar[$k]');\n$ar[$k].style.display = 'inline';$ar[0].style.display = 'none';}
    9. else {"."$ar[$k].style.display = 'none';$ar[0].style.display = 'block';}\n";}
    10. $ret.="if(";
    11. for($l=1;$l<count($arr);$l++)
    12. {$ret.="rr.$arr[$l].value=='' || ";}
    13. $ret.="rr.cap.value.length!=4){rr.subm.disabled=1;}else{
    14. if(!rr.dop.checked){rr.dop.checked=true;}else{return false;}}";
    15.  
    16. return $ret;}
    17. ?>