单选按钮 - 从Db读取预选值

时间:2012-02-27 00:31:05

标签: php jquery mysql radio-button

我有一个单选按钮,它从mysql读取值并成功突出显示正确的单选按钮。 我也有jquery验证,当单选按钮处于'no'值时,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);

?>

RADIO BUTTON CODE:

       <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 :(得分:0)

让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>

答案 1 :(得分:0)

您需要在head中添加一些内容,以便在页面加载时自动禁用。{p>我相信你可以为id找出合适的值。

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

您可以从PHP中禁用下拉菜单,但这是一个坏主意,因为您将禁用禁用JavaScript的人。