[質問]複数フィールドを一つにまとめる方法

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前:  : 2007/03/06(火) 09:19  ID:HASCXn3O sub-FV
はじめまして。

質問なんですが、2つ以上のinputフィールドに入力された内容を一つにまとめて送信したいのですが、うまくいきません。
つまり、

<input type="hidden" name="0">
<input name="1">
<input name="2">

とあるとして、

name1に「XXX」
name2に「OOO」

と入力されたとします。
その場合、name0に「XXX_OOO」などと入力して、name0のみをpostしたいのですが、これをJavaScriptで実現するにはどういった記述をすれば出来るのでしょうか?
name0はhiddenなので、inputじゃ無くてもいいです。cgiに送信さえ出来れば。
ご教授のほど宜しくお願いします。

1   名前:  : 2007/03/06(火) 09:19  ID:HASCXn3O sub-FV
補足というか訂正です。

×その場合、name0に「XXX_OOO」などと入力して
○その場合、name0に「XXX_OOO」が自動挿入されるようにして

どうか宜しくお願いします。

2   名前: 匿名 : 2007/03/06(火) 09:19  ID:PSeYBuuf sub-gw
それは普通はサーバー側でやることでは・・・?
JavaScriptが無効の時はどうするんですか?

3   名前: 匿名 : 2007/03/06(火) 09:19  ID:Z/T9lFdK sub-kJ
<form action="#" onsubmit="
    var e, value = [ ];
    var i = 1;
    while (e = this.elements['name' + i++]) { // 番号に切れ目がないことが前提のループ
        value.push (e.value);
        e.disabled = true;
    }
    this.elements['name0'].value = value.join ('_');
    
    // 必要ならばもう一度ループを回して disabled を解除する
">
<p>
  <input type="hidden" name="name0" value="">
  <input name="name1" value="11">
  <input name="name2" value="22">
  <input name="name3" value="33">
  <input name="name4" value="44">
  <input type="submit">
</p>
</form>

4   名前:  : 2007/03/06(火) 09:19  ID:HASCXn3O sub-FV
>>2
MovableTypeで使うつもりなんですが、かなり複雑でどこをいじればいいのか分からなかったので・・・。
どっちにしろスパムフィルターとして、Javascriptがオンになってないと投稿できない使用にしてあるので、問題ないと思います。

>>3
おかげさまで無事解決しました。
本当にありがとうございます。

5   名前: 匿名 : 2007/03/06(火) 09:19  ID:Z/T9lFdK sub-kJ
蛇足だけど、

> Javascriptがオンになってないと投稿できない使用にしてあるので、問題ないと

JavaScript が有効だろうと無効だろうと、原理さえ知っていれば投稿自体は可能。>>2 の指摘通り、サーバ側でも対処すべき。JavaScript はあくまで補助に過ぎない。

6   名前:  : 2007/03/06(火) 09:19  ID:HASCXn3O sub-FV
>>5
もちろん投稿自体は出来ますよ。
javaがオンになってない場合にコメント欄が消される=投稿不能エラーが出るって仕様のプラグイン入れてるだけなんで。だからそのプラグイン知ってれば更に強力なスパム作れるでしょうね。
でも、一般の人は普通に投稿用のページから投稿するので、javaがオフなら投稿できないっていうフィルターに引っ掛ってしまうので、このスレのjavaを入れても入れなくても、javaをオンにしなければならないので問題ないと考えてます。
というか、元の仕様は外部からの投稿が出来ないようになってるはずです。(知識不足で正確には分かりませんが)

本当はCGI自体を変えれればいいんですがそこまで知識が無いので・・・。
<input name="hoge">
<input name="hoge" type="hidden" value="_">
<input name="hoge">
とあった場合に全てのhogeを読み取るようにすればいいだけなんですけどね。その方法が分からないので。
ちなみに通常時は一番上のhogeしか読み取りません。

7   名前: 匿名 : 2007/03/06(火) 09:19  ID:Z/T9lFdK sub-kJ
> だからそのプラグイン知ってれば更に強力なスパム作れるでしょうね

私の懸念はまさにここだったわけで。まあとにかく、うまくいったらノウハウを教えて下さい。


# なお、Java なんて使ってない。Java と JavaScript は、インドとインドネシアくらい違う別言語。

8   名前:  : 2007/03/06(火) 09:19  ID:HASCXn3O sub-FV
>>7
ノウハウが教えれるほどになるのはいつになるか・・・苦笑

javascriptですよね・・・。
一応違いを知ってるだけに、なんで間違ったのか自分でも分からない・・・。
寝ぼけたのか・・・恥ずかしい・・・。

一覧へ戻る