2014-02-24 79 views
0

我有這個下拉菜單:獲得選擇下拉菜單中的文本,而不提交按鈕

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="" /> 

這其實當我選擇的語言之一提交,並在URL鏈接添加?lang=.....。它的效果很好,網址改變了下拉菜單總是英語。

我怎樣才能使它也改變爲選定的語言?

我已經使用這個,但它沒有工作。

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

我解釋說,線之上,當我取消它,並添加表單標籤

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

好下拉菜單中保持選定的語言,但不改變與沒有翻譯lang=.....和頁面的鏈接。

我該如何管理它們以保持所選下拉菜單文本並更改鏈接?

在此先感謝。

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

我的函數語言和im即使會話變量也許錯誤在這裏。

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';} 

    } 
+0

使用不同的會話變量名

我覺得你還是需要重定向頁面。你確定你在php中設置了會話變量嗎? – Skriptotajs

+0

@Skriptotajs是會話變量工作良好。 –

+0

如果你想重定向你選擇的語言,那麼你也可以使用HTML5 'localStorage.setItem('lang','eng');'並在重定向後得到它 –

回答

1

您在PHP

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

在HTML

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

對不起,我沒有發佈該會議的最後一個,看起來確切的是我現在編輯我的表單之前。 –

+0

hehehe你是對的:),我在我的HTML下拉菜單中提供了這個'$ _SESSION ['selectlang']',它工作:)。我認爲ss將用於隱藏輸入。好,謝謝。 –

0

當您重定向頁面時,如果您確定,將該值保存到會話變量,則問題可能出現在字母大小寫中。

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

變化

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

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

不,這個問題,信件很好,我已經做好了會議變量與大字母在beagle –

+0

嗯,我想我必須顯示即時通訊製作會議,讓你知道。編輯 –

+0

@echo_Me - 試用$ _REQUEST ['lang'] ==「english」 – sathish

0

嘗試下面的選項。

<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> 
+0

我想我必須添加我的功能來顯示sessiojn vars看編輯問題 –

0

試試這個改變你的網址而不加載頁面。

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

我必須加載頁面以獲取語言文件和翻譯頁面。 –

相關問題