【问题标题】:Radio Button - Reading Pre Selected Values From Db单选按钮 - 从 Db 中读取预选值
【发布时间】:2012-02-27 12:29:47
【问题描述】:

我有一个单选按钮,它从 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>

两个下拉菜单称为颜色和阴影

【问题讨论】:

  • 您是禁用 PHP 的下拉菜单还是仅在 JavaScript 中禁用下拉菜单?您需要显示更多代码。
  • 我使用 jquery。已使用 jquery 的源代码进行了编辑。我认为问题不在于 jquery,因为如果我选择“否”,它就可以工作。但是当从 mysql 导入“否”时,它不起作用,直到我自己单击“否”。

标签: php jquery mysql radio-button


【解决方案1】:

您需要在head 中添加与此类似的内容,以便在页面加载时自动禁用它。我相信您可以为id 找出一个合适的值。

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

你可以从 PHP 中禁用下拉菜单,但这是个坏主意,因为你会搞砸禁用 JavaScript 的人。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我之前试过这个但是由于某种原因它不起作用:s
    • 你把这个放在代码的什么地方?确定在绑定点击功能后添加吗?
    • 对不起,不知道接受,新手。我已经在上面编辑了我的 jquery 以显示我把它放在哪里谢谢
    • 你不应该重新包含&lt;script src="jquery.js"&gt;...这只需要添加一次
    • 另外,我通过代码稍作修改。删除重复的库包含并使用新代码。
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多