【问题标题】:PHP: Change dropdown style or appreance if dropdown option is selectedPHP:如果选择了下拉选项,则更改下拉样式或外观
【发布时间】:2013-12-04 00:24:56
【问题描述】:

你能帮我吗?..如果用户选择任何选项,我希望我的下拉菜单改变它的样式,要么使下拉选择对象文本变为红色,要么使下拉菜单本身变为红色而不是默认的蓝色,因此用户不能confius ,可以注意到下拉列表被选中或更改,并且可以区分是否错过了任何下拉列表。在我的情况下,用户需要选择所有下拉菜单。

我的逻辑是:如果下拉列表没有改变或者值不是 0,那么 -> 显示一些下拉列表,让用户注意到下拉列表已经改变或评级

或者如果用户选择任何下拉菜单,则将某些内容更改为下拉菜单外观或样式

您可以在此处查看我的下拉列表: https://docs.google.com/document/d/1ljW8PVjKQC4FMqFPU54uNbiuVqOmi6G-0JPCucinqME/pub

我的下拉代码将根据 MySQL 中的问题数量进行循环。如果有 2 个问题,则 drpdown 将显示 2:

    while($row = mysql_fetch_array($Result))
    {   
         <td class='section2' id='self_assess_staff'>
              <select id='self_assess_staff' name='self_assess[]'>
                 <option value='0' selected>-</option>
                 <option value='1' width='2px'>1</option>
                 <option value='2'>2</option>
                 <option value='3'>3</option> 
                 <option value='4'>4</option>
                 <option value='5'>5</option>
             </select>
         </td>
    }
echo "    </tbody> 
                </div></div>
                <tr><td></td<td></td><td></td><td></td><td></td><td></td><td align='right'><button id='EditSubmit1' onclick='checkbox();'>Submit Data</button></td></tr>
                </table>";  
            }

因为你们要我的javascript:

<script type="text/javascript">
$(document).ready(function() {

    $("#EditSubmit1").click(function (e) {
            e.preventDefault();     

            var self_assess_check = $("select[name='self_assess[]'] option:selected").map(function() {
            return $(this).text();
            }).get();

            //alert(self_assess_check);

            if ($.inArray('-', self_assess_check) != -1) {
                alert("Please Make Sure All Question Have been rate");
                return false;
            } else {
                var r = confirm("Make sure all answer is correct. Once Submit it cannot be changed");
                if (r == true) {
                } else {
                return false;
                }
            } 

            var self_assess = $("select[name='self_assess[]'] option:selected").map(function() {
            return $(this).text();
            }).get();

             alert(self_assess);

            var JsonData = {self_assess: self_assess,};  

            jQuery.ajax({
            type: "POST", // Post Get method
            url: "answer_response.php", //Where form data is sent on submission
            dataType:"text", // Data type, HTML, json etc.
            data:JsonData, //Form variables
            success:function(response){     

                $("#contentLeft").append(response);

            alert("Your Data Have Been Recorded");
                window.location.reload(true);   // reload after append  
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(thrownError);
            }
            }); 
    });

            $("#CancelSubmit").click(function (e) {
            e.preventDefault(); 
            window.location.reload(true);                   
            });

    });
</script>

【问题讨论】:

  • 你的问题一点都不清楚。如果您想在用户选择内容时更改样式,则必须在 Javascript 中完成。如果您想在创建原始页面时设置样式,那是在 PHP 中。你想做什么?你的循环没有使用$row,它对数据库做了什么?
  • 是..如果用户更改或选择下拉菜单..我也希望下拉菜单更改..我想确保用户看到哪个下拉用户没有回答,因为下拉菜单可能会循环 10 或 20 . 所以用户无法区分他们是否错过了一个或两个下拉菜单。
  • 然后使用 Javascript 将处理程序绑定到执行您想要的 change 事件。使用 CSS 类来更改下拉菜单的样式。
  • 您的代码没有任何意义。您的 mysql 不完整,并且不包含任何标记的 jquery。
  • 我已经更新了我的问题.. :p

标签: javascript php jquery mysql drop-down-menu


【解决方案1】:

看到这个DEMO

编辑:

  $("#button1").on("click", function(){
    var flag=true;
    $("select").each(function(){
        if($(this).val()=="0")
            $(this).addClass("err");
    }).on("change", function(){
        if($(this).val()!="0")
            $(this).addClass("ok").removeClass("err");
        else
            $(this).addClass("err").removeClass("ok");
    });

});

用 php 创建动态下拉菜单:

<select id='self_assess_staff' name='self_assess[]'>
while($row = mysql_fetch_array($Result))
{ 
   $selected = (a condition)? "selected=selected":""; //If it have 2 question     
   echo "<option ".$selected." value='".$row["value"]."'>".$row["value"]."</option>";
}
</select>

【讨论】:

  • 我认为这不是我想要的......我只是希望用户在点击 0 以外的更改后注意到下拉更改
  • 所以你可以使用 jquery,看我的编辑
  • 我已经有了错误消息。我需要的是当用户更改下拉菜单时。它会对下拉菜单产生影响。就像下拉菜单变成红色而不是蓝色,以确保用户知道哪个下拉菜单他没有评分,因为如果我有 1000 个下拉菜单,他们找不到哪个下拉菜单尚未评分
  • 而不是显示一条错误消息,你可以让下拉菜单变成红色还是什么
【解决方案2】:

您需要通过下拉菜单的 onchange 事件获取用户操作来更改样式

<select id='self_assess_staff' name='self_assess[]' onchange="change_style();">
             <option value='0' selected>-</option>
             <option value='1' width='2px'>1</option>
             <option value='2'>2</option>
             <option value='3'>3</option> 
             <option value='4'>4</option>
             <option value='5'>5</option>
         </select>

编写javascript函数

function change_style()
{
   //now with the id "self_assess_staff" you can change any style attribute of 0the dropdown
document.getElementById('self_assess_staff').style.attribute='whatever you want';//this is for changing an attiribute
document.getElementById('self_assess_staff').className='whatever you want';//this is to change the class name 
}

【讨论】:

  • 你能详细说明一下这个类吗.. 似乎只有第一个下拉列表发生了变化,因为数组中的下拉列表。
【解决方案3】:

使用 javascript 并为您的代码创建一个 onchange 操作

     <select id='self_assess_staff' name='self_assess[]' onchange='jsAction(this)'>
                 <option value='0' selected>-</option>
                 <option value='1' width='2px'>1</option>
                 <option value='2'>2</option>
                 <option value='3'>3</option> 
                 <option value='4'>4</option>
                 <option value='5'>5</option>
             </select>

    //js
    <script>
    function jsAction(val){
     alert(val.text);
    }
</script>

类似的东西

【讨论】:

  • 是的。像这样的东西,但我需要更多的函数内部和 val 来自哪里?
  • 由您决定您想在脚本中执行什么样的操作..这只是基本想法..
  • 我知道基本概念.. :P .. 这就是我问这个问题的原因.. 我需要这个功能.. 顺便说一句谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多