2015-11-23 27 views
2

这是我的第一个问题,所以我很抱歉,如果我做错事。 我有一个textarea和一个选择。我想更改textarea内容,当我在select中更改选项时已输入内容。但是,当我选择我想要textarea来显示我以前输入的内容时,回到之前的选项。textarea的内容变化的onchange在JavaScript

e.g当我选择的选择“英语”选项我想textarea展现“英文文本”。然后,当我选择“法国”我想textarea,以示“法文本”,但是当我再次选择“英语”选项,textarea需要展现“英文文本”一次。

编辑:我需要在服务器端存储数据,所以它可以从任何计算机上读取!对不起,以前没有定义它。

这里是我的HTML代码:

为JS
<select class="dropdown no-border" id="dropdownLanguage"> 
    <option>Choose language</option> 
    <option>English</option> 
    <option>French</option> 
</select> 

<textarea name="agencyDescription" id="agencyDescription" class="about-agency" placeholder="Write something about your agency..." maxlength="5000"> 
    <?php echo $agency->getData('agencyDescription'); ?> 
</textarea> 

@OliverRadini的代码:

var languageDropdown = document.getElementById("dropdownLanguage"); 
var lastSelected = languageDropdown.options[languageDropdown.selectedIndex].value 

console.log(lastSelected); 

languageDropdown.onchange = function(){ 

    var textBox = document.getElementById("agencyDescription");  
    currentText = textBox.value; 

    var selected = this.options[this.selectedIndex].value; 

    //load the current text into the last selected value 
    sessionStorage.setItem(lastSelected, currentText); 


    //load the new text in to the text box 
    textBox.value = sessionStorage.getItem(selected); 

    lastSelected = selected; 
}; 

我想保持与JS,而不是jQuery的。 谢谢你,前面!

+1

'localStorage'或'sessionStorage'可能会帮助你在这里:) –

+0

Localstorage是一个好主意,就像@AhsN说的,或者你可以将你的英语和法语文本存储在标记中的隐藏元素 –

+0

'localStorage'正在帮助,但我需要一个服务器端存储,所以我可以在其他设备上访问数据 – dmikic

回答

2

这里有一个小提琴我做,它的工作原理,但如果它不完美,但我会很感激的反馈:

https://jsfiddle.net/szmnforr/

var languageDropdown = document.getElementById("dropdownLanguage"); 

var lastSelected = languageDropdown.options[languageDropdown.selectedIndex].value 

console.log(lastSelected); 

languageDropdown.onchange = function(){ 

    var textBox = document.getElementById("agencyDescription");  
    currentText = textBox.value; 

    var selected = this.options[this.selectedIndex].value; 

    //load the current text into the last selected value 
    sessionStorage.setItem(lastSelected, currentText); 


    //load the new text in to the text box 
    textBox.value = sessionStorage.getItem(selected); 

    lastSelected = selected; 
}; 

这实在是太丑陋,我不喜欢这个全局变量的使用,但它基本的工作原理。

+0

作品!非常感谢你! – dmikic

+0

我只能从sessionStorage的改变localStorage的,因此它可以是持久 – dmikic

+0

是不是在这一个点上接受?我认为你应该在这里接受其中的一个答案(不一定是我的答案),并在别处再问一次,否则对于任何未来的人会感到困惑。 – OliverRadini

0

我不知道,但我认为这样的事情应该做你的期望......

<select class="dropdown no-border" id="dropdownLanguage"> 
    <option selected="selected">Choose language</option> 
    <option value="0">English</option> 
    <option value="1">French</option> 
</select> 

<textarea name="agencyDescription" id="agencyDescription" class="about-agency" placeholder="Write something about your agency..." maxlength="5000">    
</textarea> 


<script type="text/javascript"> 

    var select = document.getElementById("dropdownLanguage"); 
    var selectArray = []; 
    var textArray = ["english txt","french txt"]; 
    var tArea = document.getElementById("agencyDescription"); 

    select.onclick = function(){ 
     textArray[parseInt(select.options[select.selectedIndex].value)]=tArea.value; 
    } 
    select.onchange = function(){ 
     tArea.value = textArray[parseInt(select.options[select.selectedIndex].value)]; 
    } 
</script> 
+0

以后能解释一下,如果你想我必须现在完全移动 – goupil