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

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

Моя проблема заключается в том, что когда пользователь выбирает переключатель «нет», он сохраняет его в mysql, но когда он / она снова входит в систему, переключатель находится в правильном положении «нет», однако 2 выпадающих меню НЕ отображаются серым цветом. как они должны быть. Если я затем нажму на кнопку «нет», они станут серыми.

Я, очевидно, не хочу этого, если пользователь выбрал 'нет', то снова входит в систему, и я хочу, чтобы выпадающие меню были серыми при входе в систему.

php код:

<?php
$row2 = "SELECT * FROM user WHERE username = '" . mysql_real_escape_string($_SESSION['username']) . "'";
$result = mysql_query($row2) or die("Error in SQL: " . mysql_error());
$row3 = mysql_fetch_array($result);

?>

КОД КНОПКИ РАДИО:

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

I would be greatful if someone could tell me where i am going wrong. When retrieving the value from the database it is obviously not physically selecting the radio button which i would like it to do

JQUERY VALIDATION:

          <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 colour selection');                  
                            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;   

$(document).ready(function(){    

$("input[name=attendance1]:checked").triggerHandler('click'); 
});     
</script>

два раскрывающихся списка называются цвет и оттенок

Ответы [ 2 ]

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

Вам нужно добавить что-то вроде этого в ваш head, чтобы он автоматически отключался при загрузке страницы. Я уверен, что вы можете найти подходящее значение для id.

<script>
$(document).ready(function () {
  $("#colour" + id + ", #shade" + id).prop("disabled", this.value == 'No');
});
</script>

Вы можете отключить раскрывающиеся списки в PHP, но это плохая идея, потому что вы будете обманывать людей с отключенным JavaScript.

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

Пусть jQuery вызовет обработчик onclick при загрузке страницы:

$(document).ready(function(){
   $("input[name=attendance]:checked").triggerHandler('click');
});

Таким образом, ваш общий код будет выглядеть примерно так:

<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 colour selection');                  
            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;  
   });
});

$(document).ready(function(){    
    $("input[name=attendance]:checked").triggerHandler('click'); 
});     

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