简体   繁体   English

获取没有提交按钮的下拉菜单的选定文本

[英]Get selected text of dropdown menu without submit button

I have this drop down menu: 我有这个下拉菜单:

if(isset($_POST['ss'])){$_SESSION['ss'] = $_POST['ss'] ;}else{$_SESSION['ss'] = 'English';}


<select name = "selectlang" class="selectlang" onchange="location = this.options[this.selectedIndex].value;">
        <option  value='<?php $website_link ?>?lang=english' <?php if($_SESSION['ss'] == "English"){echo ' selected="selected"' ;} ?>>English</option>
        <option  value='<?php $website_link ?>?lang=swedish' <?php if($_SESSION['ss'] == "Swedish"){echo ' selected="selected"' ;} ?>>Swedish</option>
        <option  value='<?php $website_link ?>?lang=russian' <?php if($_SESSION['ss'] == "Russian"){echo ' selected="selected"' ;} ?>>Russian</option>
</select>
<input type="hidden" name="ss" id="lang_hidden" value="" />

this actually when I select one of languages it submit and added ?lang=..... in the url link. 这实际上是当我选择一种语言提交并在URL链接中添加?lang=.....时。 And it works good, the url changes how ever the drop down menu is always English. 而且效果很好,网址会更改下拉菜单始终为英语的方式。

How can i make it changes also to selected language ? 如何将其更改为所选语言?

I have used this but it didnt work. 我已经用过了,但是没用。

$(".selectlang").change(function(){
var inpvalue = $('.selectlang option:selected').text();
    $("#lang_hidden").val(inpvalue).val();
   //$("#lang_hidden").closest('form').trigger('submit'); //(i will explain this)
  });

I explain that line above, when I uncomment it and add the form tags 当我取消注释并添加表单标签时,我在上面解释了这一行

  <form method="POST" action="">
 the above html code
  </form>

Well the dropdown menu keeps the selected language but dont change the link with lang=..... and pages not translated. 下拉菜单会保留选定的语言,但不要使用lang=.....更改链接,并且页面不会翻译。

How can I manage them both to keep selected drop down menu text and get link changed? 如何管理它们以保持选定的下拉菜单文本并更改链接?

Thanks in advance. 提前致谢。

 //wanna see my function language so let me know.

my function language and where im making session variables maybe the error is here. 我的函数语言以及在哪里制作会话变量的地方可能是这里的错误。

   function setlanguage(){
    //$_SESSION['selectlang'] = '';
    //if(!isset($_SESSION['selectlang'])){$_SESSION['selectlang'] = 'English' ;}
    //if(!isset($_GET['lang'])){$_GET['lang'] = 'english' ;}
    if(isset($_GET['lang'])){
        switch ($_GET['lang']){
            case "english" :
                    $_SESSION['selectlang'] = 'English';
                  include("lang/english.php");
                  break;
            case "swedish" :
                    $_SESSION['selectlang'] = 'Swedish';
                   include("lang/swedish.php");
                   break;
            case "russian":
                    $_SESSION['selectlang'] = 'Russian';
                   include("lang/russian.php");
                 break;

                }
        }
    else if(!isset($_GET['lang']) and isset($_SESSION['selectlang'])){
        switch ($_SESSION['selectlang']){
            case "English" :
                    $_SESSION['selectlang'] = 'English';
                  include("lang/english.php");
                  break;
            case "Swedish" :
                    $_SESSION['selectlang'] = 'Swedish';
                   include("lang/swedish.php");
                   break;
            case "Russian":
                    $_SESSION['selectlang'] = 'Russian';
                   include("lang/russian.php");
                 break;
            default :
                    include("lang/english.php");
        }
    }
    else{include("lang/english.php"); $_SESSION['selectlang'] = 'English';}

   }

You use different session variable names 您使用不同的会话变量名称

in php 在PHP中

$_SESSION['selectlang'] = 'Russian';

in HTML 在HTML中

$_SESSION['ss'] == "Russian"

When You redirect page, if You are sure, You save the value to session variable, then the problem might be in letter case. 当您重定向页面时,如果确定,则将值保存到会话变量中,则问题可能出在大写字母形式。

value='<?php $website_link ?>?lang=english'

change 更改

<?php if($_SESSION['ss'] == "English"){echo ' selected="selected"' ;} ?>

to

<?php if($_SESSION['ss'] == "english"){echo ' selected="selected"' ;} ?>

Try the below options. 请尝试以下选项。

 <option  value='<?php $website_link ?>?lang=english' <?php if($_SESSION['ss'] == "english"){echo "selected" ;} ?>>English</option>

or 

 <option  value='<?php $website_link ?>?lang=english' <?php if($_REQUEST['lang'] == "english"){echo "selected" ;} ?>>English</option>

try this to change your url without page load. 尝试此操作以更改您的网址,而无需页面加载。

pageurl = 'yourpage.php?lang=inpvalue;
if(pageurl!=window.location){
    window.history.pushState({path:pageurl},'',pageurl);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM