OK、あなたの問題には2つの解決策があります。1つ目は、ライブ値の更新です。
<select id="folder" name="folder">
<option ...
... </option>
<option id="otheroption" value="New">Other</option>
</select>
<div id="otherfolder" style="display:none">
<label for="otherinput">New folder name:</label>
<input id="otherinput">
</div>
<script> // here, or execute the following onload/ondomready
document.getElementById("folder").onchange = function(e) {
// I guess you have this piece of code already
document.getElementById("otherfolder").style.display =
this.options[this.selectedIndex].id == "otheroption" ? "" : "none";
};
document.getElementById("otherinput").onkeyup = function(e) {
document.getElementById("otheroption").value = this.value;
};
</script>
2つ目は、選択ボックスと入力ボックスのsを(まったく同じマークアップで)動的に変更して、パラメーターname
としてサーバーに送信される値を決定することです。folder
document.getElementById("folder").onchange = function(e) {
var name = "folder",
other = this.options[this.selected].id == "otheroption";
document.getElementById("otherfolder").style.display = other ? "" : "none";
document.getElementById("otherinput").name = other ? name : "";
this.name = other ? "" : name;
};