选择单选按钮时,jQuery验证无效

时间:2012-02-26 23:53:01

标签: php jquery mysql jquery-validate

我的表单有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 :(得分:0)

您在“是”单选按钮中添加了额外的 checked =“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 

希望有所帮助

答案 1 :(得分:0)

我看到的问题是这部分

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

如果$row3['attendance1']为“是”,则会显示以下内容

checked="CHECKED" checked

所以这会造成问题。删除checked="CHEKCED"部分。