2012-02-27 40 views
0

我有一个单选按钮,它从mysql中读取值并成功突出显示正确的单选按钮。 我也有jquery验证,当单选按钮处于'no'值时,2个下拉菜单变灰。单选按钮 - 从Db中读取预先选定的值

我的问题在于,当用户选择“否”单选按钮时,它将其保存到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); 

?> 

单选按钮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

你是否禁用PHP的下拉菜单或仅在JavaScript中?你需要显示更多的代码。 – spencercw 2012-02-27 00:35:16

+0

我使用jQuery。已编辑与jquery的源代码。如果我物理选择“否”,我不认为问题在于jquery的工作原理。但是当从mysql导入“否”时,它不起作用,直到我自己单击“否”。 – Jacob 2012-02-27 00:39:53

回答

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> 
+0

我以前尝试过,但是由于某种原因,它不起作用:s – Jacob 2012-02-27 01:10:19

+0

你把这个放在代码中?你确定在点击函数被绑定后添加它吗? – 2012-02-27 01:16:15

+0

抱歉不知道接受,这是新的。我已经编辑了上面的jquery以显示我在哪里放置它,谢谢 – Jacob 2012-02-27 01:26:56

0

您需要添加沿着此线的东西在你的head所以它会自动禁用页面加载时:因此,像您的总代码看起来。我相信你可以找出适合id的值。

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

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

+0

我试过了,但它仍然在做同样的事情 – Jacob 2012-02-27 01:01:19