PHP - 保持当前页面焦点的下拉功能 [英] PHP - Dropdown function that keeps current page in focus

查看:88
本文介绍了PHP - 保持当前页面焦点的下拉功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个下拉式导航,一旦用户点击一个按钮,用户就可以进入下拉菜单中选择的页面。我有一个函数将页面部分标题作为参数,并在页面顶部建立一个新的下拉页面,以便您导航到的每个页面都将保持在下拉列表中。该功能是一个大量的开关案例,有很多重复的代码,我知道有一个更简单和更简洁的方法来做到这一点...我只是想着解决方案时遇到麻烦。这里有一个代码片段,我不会发布整个开关案例:

pre $函数makeDropDown($ page){
switch($ page){
case'uploads':
echo'< center>< form action =pictures.phpaction =get>
< select name =pictype>
< option value =uploads>上传< /选项>
< option value =fromweb>从Web< / option>
< option value =wallpapers>壁纸< / option>
< option value =misc>其他< / option>
< / select>
< input type =submitvalue =Go!/>
< / form>< / center>';打破;
case'fromweb':
echo'< center>< form action =pictures.phpaction =get>
< select name =pictype>
< option value =fromweb>从Web< / option>
< option value =uploads>上传< /选项>
< option value =wallpapers>壁纸< / option>
< option value =misc>其他< / option>
< / select>
< input type =submitvalue =Go!/>
< / form>< / center>';打破;
case'wallpapers':
echo'< center>< form action =pictures.phpaction =get>
< select name =pictype>
< option value =wallpapers>壁纸< / option>
< option value =uploads>上传< /选项>
< option value =fromweb>从Web< / option>
< option value =misc>其他< / option>
< / select>
< input type =submitvalue =Go!/>
< / form>< / center>';打破;

有何建议?

解决方案

为什么不尝试使用选项项目的选定属性,而不是将选定项目移动到列表顶部。这会将选择框初始化为选定的选项。只需在匹配 $ page


$ b $的值的选项中回显 selected b

 函数makeDropDown($ page){
echo'< center>< form action =pictures.phpaction =get>';
echo'< select name =pictype>'; $($ page $uploads)?selected:)。'>上传< / option>';
echo'< option value =uploads $($ page $fromweb)?selected:)。'> From Web< / option>';
echo'< option value =fromweb (($ page ==wallpapers)?selected:)。'>壁纸< / option>';
echo'< option value =wallpapers $($ page =misc)?selected:)。'>其他< / option>';
echo'< option value =
echo'< / select>';
echo'< input type =submitvalue =Go!/>';
echo'< / form>< / center>';
}

这样,如果 $ page =='misc ',您的HTML将以这种方式导致

 < center>< form action =pictures .phpaction =get> 
< select name =pictype>
< option value =uploads>上传< /选项>
< option value =fromweb>从Web< / option>
< option value =wallpapers>壁纸< / option>
< option value =miscselected>其他< / option>
< / select>
< input type =submitvalue =Go!/>
< / form>< / center>'


I have a drop-down navigation that brings the user to the page selected in the drop-down once the user clicks a button. I have a function that takes in the page section title as a parameter and builds a new drop-down with that page on top of the list, so that each page you navigate to will remain in focus in the drop-down. The function is a massive switch case with a lot of repetitive code and I know there's an easier and cleaner way of doing this... I'm just having trouble thinking of a solution. Here's a code snippet, I won't post the entire switch case:

function makeDropDown($page){ 
switch ($page){
    case 'uploads':
      echo '<center><form action="pictures.php" action="get">
         <select name="pictype">
         <option value="uploads">Uploads</option>
         <option value="fromweb">From Web</option>
         <option value="wallpapers">Wallpapers</option>
         <option value="misc">Miscellaneous</option>
         </select>
         <input type="submit" value = "Go!"/>
         </form></center>'; break;
   case 'fromweb':
      echo '<center><form action="pictures.php" action="get">
         <select name="pictype">
         <option value="fromweb">From Web</option>
         <option value="uploads">Uploads</option>
         <option value="wallpapers">Wallpapers</option>
         <option value="misc">Miscellaneous</option>
         </select>
         <input type="submit" value = "Go!"/>
         </form></center>'; break;
   case 'wallpapers':
      echo '<center><form action="pictures.php" action="get">
         <select name="pictype">
         <option value="wallpapers">Wallpapers</option>
         <option value="uploads">Uploads</option>
         <option value="fromweb">From Web</option>
         <option value="misc">Miscellaneous</option>
         </select>
         <input type="submit" value = "Go!"/>
         </form></center>'; break;

Any suggestions?

解决方案

Instead of moving the selected item to the top of the list, why not try using the selected attribute of the option items. This will initialize the select box to the selected option. simply echo selected in the option that matches the value of $page

function makeDropDown($page){ 
    echo '<center><form action="pictures.php" action="get">';
    echo '    <select name="pictype">';
    echo '        <option value="uploads"'.(($page=="uploads")? " selected":"").'>Uploads</option>';
    echo '        <option value="fromweb"'.(($page=="fromweb")? " selected":"").'>From Web</option>';
    echo '        <option value="wallpapers"'.(($page=="wallpapers")? " selected":"").'>Wallpapers</option>';
    echo '        <option value="misc"'.(($page=="misc")? " selected":"").'>Miscellaneous</option>';
    echo '    </select>';
    echo '    <input type="submit" value = "Go!"/>';
    echo '</form></center>';
}

This way, if $page=='misc', your HTML will result this way

<center><form action="pictures.php" action="get">
    <select name="pictype">
        <option value="uploads">Uploads</option>
        <option value="fromweb">From Web</option>
        <option value="wallpapers">Wallpapers</option>
        <option value="misc" selected>Miscellaneous</option>
    </select>
    <input type="submit" value = "Go!"/>
</form></center>'

这篇关于PHP - 保持当前页面焦点的下拉功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆