2012-02-27 108 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