javascript:データを日本語で渡す場合のプルダウン連動選択方法について
こういうサンプルがあったのですが
http://q.hatena.ne.jp/1157378504
フォームで日本語をvalueに入れてCGIで送信したいので
受信側のValueの日本語「あああ」の前にAあああといれて送信側の値Aと最初の一文字だけ
比べてプルダウンを選択したいのです。
上記の例は、日本語を入れた場合、IEではデータの渡しができますが他ブラウザでは動作しません。
最低でもFireFox、Opera、Safariで動作したいです。
以下みたいにフォーム部分はしたいのです。
【送信側】
<html>
<body>
<a href="2.html?myList=A">メニューあああ</a>
</body>
</html>
【受信側】
<html>
<body onload="setDropDownList();">
<form>
<select id="myList" >
<option value="Aあああ">あああ</option>
<option value="Bいいい">いいい</option>
<option value="Cううう">ううう</option>
</select>
</form>
</body>
</html>
<script type="text/JavaScript">
<!--
:
:
どうかご教授お願いします。
また、結果が同じであれば他の方法でも大丈夫なので
なにかいい方法がありましたら教えてください!!
No.2
- 回答日時:
optionのvalueの先頭に一文字足してそのフォームの送り先では問題ないのでしょうか?
{
a:'あああ',
b:'いいい',
c:'ううう'
}
こんな対応データを用意しておく方法もありますけど。
一応、valueの先頭一文字で判定するように改造する方法を以下に。
// ドロップダウンリストの初期選択
element.value = lstVal;
↓
// ドロップダウンリストの初期選択
for(var i=0;element.options[i];i++){
if(element.options[i].value.substring(0,1) == lstVal){
element.options[i].selected = true;
break;
}
}
動作確認はしてませんのでミスがあったら失礼。
ありがとうございます。
文字を足すのは問題ないのです。
対応データを用意する方法はとてもやりやすいと思うのですが
それはどういう風におくのでしょうか?
すいませんが、サンプルのような感じで教えてください。
No.3
- 回答日時:
汎用性はまったくないけど…
<script type="text/javascript">
<!--
function setDropDownList() {
var i=0, key, kl, e, h = location.search.substr(1).split("&");
while (e=h[i++]) if (e.match(/^myList=(.+)/)) key = RegExp.$1;
if (!key) return;
kl = key.length, i = 0;
h = document.getElementById("myList").options;
while (e=h[i++]) {
if (e.value.substr(0, kl) == key) { e.selected = true; break; }
}
}
//-->
</script>
No.5
- 回答日時:
SELECTボックスの初期値をGETパラメータで渡したい、ということかな?
これでどうでしょうか。
(全角空白は半角空白に置換してください)
<script type="text/javascript"><!--
this./*@cc_on @if(@_jscript_version<=5.8) attachEvent('on' + @else @*/addEventListener(/*@end @*/ 'load', function (event) {
var doc = event.target || this.document,
query = doc.location.search.substr(1).split('=');
try {
doc.getElementById(query[0]).value = decodeURIComponent(query[1]);
} catch(e) {}
},false);
//--></script>
</head>
<body>
<p><a href="2.html?myList=%E3%81%82%E3%81%82%E3%81%82">あああ</a> <a href="2.html?myList=%E3%81%84%E3%81%84%E3%81%84">いいい</a> <a href="2.html?myList=%E3%81%86%E3%81%86%E3%81%86">ううう</a></p>
<form>
<p>
<select id="myList">
<option value="あああ">あああ</option>
<option value="いいい">いいい</option>
<option value="ううう">ううう</option>
</select>
</p>
</form>
No.6ベストアンサー
- 回答日時:
No4のサンプルです
リストを作るときには、引用元の用に、英語や数字のみで対応する。
次に、optionの値を使用する時(下記例ではsubmit時)に、本当に必要な値(日本語)に置換する。
例
<html>
<body onload="setDropDownList();">
<!-- form に onSubmit を加え、submit 時に置換用の関数を呼び出すように設定する -->
<form onSubmit="OptionConvert();">
<!-- リストの値(value)は、元のサンプル通り、英数字で作成 -->
<select id="myList" >
<option value="A">あああ</option>
<option value="B">いいい</option>
<option value="C">ううう</option>
</select>
</form>
</body>
</html>
<script type="text/JavaScript">
<!--
// submit 時に呼ばれる関数
function OptionConvert() {
// 置換用の連想配列作成
var ConvertList = new Array();
ConvertList["A"] = "Aあああ";
ConvertList["B"] = "Bいいい";
ConvertList["C"] = "Cううう";
// ドロップダウンリストの要素を取得
var element = document.getElementById("myList");
// 選択された要素の値を置換(日本語で上書き)
element.options[element.selectedIndex].value = ConvertList[element.value];
// // 質問通り 単純に value(A) に text(あああ) を追加したいなら この関数は 下記の2行でOK
// var element = document.getElementById("myList");
// element.options[element.selectedIndex].value = element.options[element.selectedIndex].value + element.options[element.selectedIndex].text
}
// 以下元のサンプル通り
:
:
ありがとうございました。
ブラウザ各種による文字化けという問題も解決できました。
色々方法があることがわかり柔軟に考えれるよう頑張りたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでセレクトボックス...
-
selectを変更不可にしたい
-
javascriptでoptionタグを削除...
-
プルダウン選択を変更すると、...
-
hiddenに値を設定する方法
-
セレクトボックスの内容を次の...
-
Selectボックスの一覧表示方法
-
同じ名前のセレクトがある場合...
-
jqueryでselect要素を表示・非...
-
変数にフォーム名を指定したい
-
selectボックスで選択数を制限...
-
disableとすることなく、ユーザ...
-
3つのselectでURLパラメータを...
-
プルダウンメニューに連動する...
-
javascriptで計算フォームを作...
-
プルダウンを選択していないと...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
hiddenのvalueの値を変えたい
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
全てのselect要素をデフォルト...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
JavaScriptで<select>の<option...
-
プルダウン選択を変更すると、...
-
select要素のvalueを配列で取得...
-
selectを変更不可にしたい
-
<input>の選択肢をプルダウンメ...
-
ラジオボタンとプルダウンを連...
-
【JS】selectでchangeした時の...
-
VBScriptでHTMLのセレクトボッ...
-
リストボックス内の重複したも...
-
同じ名前のセレクトがある場合...
-
プルダウンの値によって活性・...
-
selectが変更されたらnameを指...
-
【javascript】連想配列からセ...
-
3つのselectでURLパラメータを...
-
複数のプルダウンを1つにまとめ...
-
selectボックスで選択数を制限...
-
セレクトボックスで配列を呼び...
おすすめ情報