
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.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
}
// 以下元のサンプル通り
:
:
ありがとうございました。
ブラウザ各種による文字化けという問題も解決できました。
色々方法があることがわかり柔軟に考えれるよう頑張りたいと思います。
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.4
- 回答日時:
受信側で受信した時に何とかするのではなく、
optionの値を使用するとき(submit時など)に、値を連想配列とかを使って、自身を書き替えてから使うんじゃ駄目?
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.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;
}
}
動作確認はしてませんのでミスがあったら失礼。
ありがとうございます。
文字を足すのは問題ないのです。
対応データを用意する方法はとてもやりやすいと思うのですが
それはどういう風におくのでしょうか?
すいませんが、サンプルのような感じで教えてください。
お探しの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ランキング
-
連動するプルダウンリストの作成
-
return falseが効かない
-
selectを変更不可にしたい
-
webページの一部のみの更新につ...
-
リストボックス内の重複したも...
-
<input>の選択肢をプルダウンメ...
-
サイト内の物件を複数の検索条...
-
selectボックスの選択結果を変...
-
JavaScriptの質問です。どなた...
-
二つのセレクトボックス間での...
-
プルダウンメニューに連動する...
-
セレクトボックスで選択した音...
-
数によってボタンを有効化したい
-
JSONデータをフォームにセット...
-
javascriptでセレクトボックス...
-
プルダウンからリンクをthicbox...
-
同じ物を3つ配置したいのですが
-
VB6でWEBのラジオボタンの...
-
Selectボックスの要素入力を省...
-
JavaScripsのDOMについてなんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input>の選択肢をプルダウンメ...
-
プルダウン選択を変更すると、...
-
javascriptでセレクトボックス...
-
スマホのフォームでのselect複...
-
二つのセレクトボックス間での...
-
全てのselect要素をデフォルト...
-
同じ名前のセレクトがある場合...
-
JavaScriptで<select>の<option...
-
ラジオボタンの値が取得できな...
-
<select> をmultiple にしてい...
-
Selectボックスの一覧表示方法
-
プルダウンの値によって活性・...
-
selectで選ばれた値を別ページ...
-
プルダウンのoptionの表示・非...
-
【JavaScript】プルダウンで数...
-
Selectボックスの要素入力を省...
-
javascriptでセルを矩形で選択する
-
セレクトボックスを2つ選択して...
-
return falseが効かない
-
IDをvalueの値でなく、class名...
おすすめ情報