Проверка JQuery не работает, когда выбран переключатель - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть проверка JQuery для моей формы. Есть радио-бокс (посещаемость) и 2 выпадающих меню (цвет и оттенок).

Отлично работает, если пользователь заходит в первый раз. Однако, поскольку я получил значение из базы данных на основе того, что они выбрали ранее, если пользователь уже выбрал свой выбор и снова вошел в систему, если он ранее выбрал «Нет», то мой jQuery не работает. Два выпадающих меню представлены и не выделены серым, как должно быть. Но если я нажимаю на кнопку «Нет», это происходит. Не уверен, что проблема заключается в JQuery или мой переключатель.

Если пользователь вошел в систему в первый раз и выбрал «Нет», он сразу же станет серым.

Проверка JQuery:

<script src="jquery.js"></script>
 <script>      
    $( function(){    
            function validate(id){       
                var enabled = ($("input[name='attendance" + id + "']:checked").val() == 'Yes');         
                if(enabled){              
                    //Please select option is selected              
                    if($("#colour" + id)[0].selectedIndex == 0){                 
                    alert('Please make your colourselection');                  
                    return false;             
                    }              
                    //Please select option is selected              
                    if($("#shade" + id)[0].selectedIndex == 0){                  
                        alert('Please select your shade');                  
                        return false;             
                    }   
                }     
                return true;    
            };

            $("input[name^='attendance']").click(function() {  

                var id = this.name.replace('attendance', '');      
                $("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');         
                validate(id);    
            });      
           $("input:submit").click(function(){         
               var retVal = true;
               $.each([1], function(i, val){
                  retVal = (validate(val) && retVal);
               });
                return retVal;   
           }); 
         }); 
  </script>

переключатель:

<input name="attendance1" type="radio" id="Yes" value="Yes" checked="CHECKED" <?php if($row3['attendance1']=="Yes") { echo "checked"; }?>/>Attend with pleasure 
<br />
<input name="attendance1" type="radio" id="No" value="No" <?php if($row3['attendance1']=="No") { echo "checked"; }?>/>Decline with regret 

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Проблема, которую я вижу, заключается в этой части

checked="CHECKED" <?php if($row3['attendance1']=="Yes") { echo "checked"; }?>

Будет отображаться следующее, если $row3['attendance1'] равно "Да"

checked="CHECKED" checked

Так что это создаст проблему. Удалить checked="CHEKCED" часть.

0 голосов
/ 27 февраля 2012

Вы добавляете дополнительные checked = "флажок" в переключателе Да, поэтому он всегда останется отмеченным, несмотря на значение, полученное из базы данных, поэтому попробуйте удалить его, например,


<input name="attendance1" type="radio" id="Yes" value="Yes" <?php if($row3['attendance1']=="Yes") { echo "checked"; }?>/>Attend with pleasure 
<br />
<input name="attendance1" type="radio" id="No" value="No" <?php if($row3['attendance1']=="No") { echo "checked"; }?>/>Decline with regret 

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...