【问题标题】:selecting language from drop down menu with jquery使用 jquery 从下拉菜单中选择语言
【发布时间】:2013-04-28 20:15:08
【问题描述】:

http://jsfiddle.net/hr5aH/

我是 jQuery 初学者,我这里有一个小问题.. 当我从下拉菜单中选择语言时,页面刷新,但下拉菜单不显示我选择的语言..它仍然是选择语言 - 但是 URL 显示我选择的语言,这就是我想要的,但不是下拉菜单

例如,如果我从下拉菜单中选择英语

<script type="text/javascript">

$(document).ready(function(){

        $("form").change(function(){

            $("select[name='lang']").attr('selected','selected');
            $("form").submit();

        })

})
</script>

    </head>
    <body>

    <form action="<?php htmlentities($_SERVER['PHP_SELF']); ?>" method="get">

    <select name="lang">

        <option value="">Choose Language</option>
        <option value="English">English</option>
        <option value="Arabic">Arabic</option>
        <option value="French">French</option>

    </select>

我看到了网址http://127.0.0.1/index.php?lang=english (我想要的)

但下拉菜单仍然选择语言 - 我只想让下拉菜单也显示语言。

【问题讨论】:

    标签: php jquery


    【解决方案1】:

    如果您想记住上次选择的语言,则需要使用 cookie。使用 jquery cookie 插件。

    //checks if the cookie has been set
    
    if($.cookie('remember_select') != null) {
    
        // set the option to selected that corresponds to what the cookie is set to
    
        $('.select_class option[value="' + $.cookie('remember_select') + '"]').attr('selected', 'selected');
    
    }
    
    // when a new option is selected this is triggered
    
    $('.select_class').change(function() {
    
        // new cookie is set when the option is changed
    
        $.cookie('remember_select', $('.select_class option:selected').val(), { expires: 90, path: '/'});
    
    });
    

    这是您的select 的样子:

    <select class="select_class">
        <option value="1">Row 1</option>
        <option value="2">Row 2</option>
        <option value="3">Row 3</option>
    </select>
    

    【讨论】:

    • 我 +1 了,但看起来他正在寻找表单提交后。所以我认为最好的办法是检查location.query是否存在,如果存在,检查lang的长度,然后应用该值。
    • 感谢矢量,我没有介绍 jquery cookie 插件 - 我只是初学者,但无论如何我都会尝试一下......所以我不必用
      ,只是带有类的普通选择框,jquery 会处理其余的..?正确
    【解决方案2】:

    这需要一点 php 魔法以及您的 HTML 代码:

    PHP 代码

    </head>
        <body>
    
        <form action="<?php htmlentities($_SERVER['PHP_SELF']); ?>" method="get">
    
        <select name="lang">
    
            <option value="">Choose Language</option>
            <?php foreach(array('English','Arabic','French') as $lang) ?>
            <option value="<?php echo $lang; ?>" <?php if ($_GET['lang']==$lang) echo "selected"; ?>><? echo $lang; ?></option>
           ?>
        </select>
    

    解释: php 代码检查您的 url 并从选择列表中选择适当的选项。

    提示:如果您希望代码更简洁,请将所有语言值放在一个数组中并循环遍历它以生成下拉菜单。

    【讨论】:

      【解决方案3】:

      你的 js 脚本必须是:

      $(document).ready(function(){
      
              $("form").change(function(){
      
                  $("select[name='lang']").attr('selected','selected');
                  $("form").submit();
      
              })
              var lang=getURLParameter('lang');
              if(lang!='null')
                   $("select[name='lang']").prop('value',lang);
      
      })
      function getURLParameter(name) {
          return decodeURI(
              (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
          );
      }
      

      getURLParameter()函数详情链接:Get URL parameter with jQuery

      【讨论】:

        【解决方案4】:

        尝试:

        $("select[name='lang']").change(function(){
            $("form").submit();
        })
        

        您可以在此添加:

        <option selected disable value="">Choose Language</option>
        

        为了防止你的 PHP 出错

        编辑:

        $_SESSION['language'] = $_GET['lang'] 和你的 jQuery

        var selected_lang = '<?php echo $_SESSION["language"]; ?>';
        $("select[name='lang']").val(selected_lang);
        

        【讨论】:

        • 感谢 Memolition 的回复:我也尝试过,但结果似乎相同。下拉菜单保持在选择语言...
        • SyntaxError: unterminated string literal [Break On This Error] var selected_lang = "
        • 创建echo $_SESSION['language'] 以查看php 语言变量的值和console.log(selected_lang); 以查看jQuery 变量值
        • 因为似乎 php 没有正确设置 $_SESSION['language'] 变量值,所以尝试 echo $_GET['lang'] 变量,您在 php 中设置 $_SESSION['language'] 变量
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多