アプリ版:「スタンプのみでお礼する」機能のリリースについて

ttp://neil.fraser.name/software/tablesort/
こちらを参考にして
JavaScriptでテーブルの並び替えをしてみたんですが
並び替え自体は出来たんですが
FormのPOST送信がうまくできません

IE6では正常なんですが
FireFoxではパラメータを取得することができません

ソース例
================================
・・・・
<script language='javascript1.2' src='tablesort.js'></script>
</head>
<body>
<table>

<THEAD>
<tr>
<td label="nocase"></td>
<td label="nocase">名前</td>
<td label="case">メールアドレス</td>
</tr>
</THEAD>

<TBODY>
<form name="userlist" method="POST" action="aaa.asp">
<tr>
<td><input type="radio" name="UserNo" value="0"></td>
<td>太郎</td>
<td>taro@sample.com</td>
</tr>
<tr>
<td><input type="radio" name="UserNo" value="1"></td>
<td>次郎</td>
<td>jiro@sample.com</td>
</tr>
<tr>
<td><input type="radio" name="UserNo" value="2"></td>
<td>三郎</td>
<td>saburo@sample.com</td>
</tr>
</TBODY>

</table>
<input type="submit" value=" 動作 ">
</form>
================================

tablesort.jsを改良したり
HTMLを工夫することによって
どのブラウザでも正常に動作するようにするには
ならないでしょうか?

A 回答 (8件)

#4,#6です。


前回書いたように、Firefoxでソートのスクリプトを組み込み、実行しても値が送信される事は確認済みです。(間違ったhtmlの状態でソートを実行すると送信されない現象も確認してます)

あと思いつくのは他のJavascriptの競合/干渉、
まだ他にHTML的におかしな部分がある、とかです。

他のJavascriptを利用しているかわかりませんが、
とりあえず、htmlの妥当性でもチェックしてみては?
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
    • good
    • 0

こんちくは。



>>質問に書いたソース例は例なので

まぁ、その気があるなら、例でもなんでも、もんのすんごく簡単なソース書いて試してみればいいんすよ。

テーブル2行、フォームでかこって、テーブルソート機能くっつけて。。。
それで試す。

まずは、「どこに原因があるかの『切り分け作業』」が肝心かと思います。

自分だったら、「まずは、テーブルソートのJavaScriptファイル外した状態で正常に動くんですか??」って書いたので、

JavaScriptファイルを外した状態、外さなかった状態で試して、違いが出るなら、JavaScriptファイルをまず疑いますが。


>>FireFoxでは正常に動作してくれないのです
>>(並び替えを1度もしなければ正常です)

これを素直に受け取っていいのならば、そのJavaScriptファイルでしょ。。。という感じではありますが。。。

ソートの際に使われてるJavaScript内の関数で、FireFoxに対応してないもの等あったりはしないもんですかね?
結構、ブラウザによってJavaScriptの対応も違いますからねぇ。。。(汗



ソートしなきゃ思い通りに動く。
なら、ソートした際に通るソース部分をまず疑うべきかと個人的には思いました。
    • good
    • 0
この回答へのお礼

回答ありがとうございました
実際に使用しているHTMLを検証して
正常に動くようになりました

お礼日時:2008/03/18 16:44

#4です。

修正して試したとの事ですが、SUBMITの位置は?

<form>
<table>
・・・・
</table>
<input type="submit" value=" 動作 "> ←(1)ここら辺が妥当
</form>
<input type="submit" value=" 動作 "> ←(2)フォームの外にsubmitボタンを置いているのだとしたらフォームの内容は送信されない。

(1)のようにしてソート後、値がブラウザから送信される事は確認しました

この回答への補足

もちろん(1)です

(2)だと<form>の外に出ちゃってますんで
それはないです。

補足日時:2008/03/07 10:57
    • good
    • 0

> FireFoxではパラメータを取得することができません


パラメータを取得するのは、どこが取得するのですか?
サーバーの<form>の値?
サーバーのスクリプトのどこかの関数?
Firefoxの何の関数?
何をする関数?
呼び出し方法は?


> (並び替えを1度もしなければ正常です)
とのことですから、送信そのものではなく、テーブルのソートに問題があるのでは?


それから、
<input>の順番を変えたところで、送信する順番は不定です。
(HTMLでも、送信する順番を規定していません)

ほとんどのブラウザで、inputの順番どおりに送信しますが、

<form method="get">
<input type="text" name="t1" value="value1">
<input type="text" name="t1" value="value2">
<input type="hidden" name="id" value="user123">
<input type="submit" value="send">
</form>

こういうHTMLを

?id=user123&t1=value1&t1=value2
?t1=value2&t1=value1&id=user123

<input>の最初から並べても、後ろから並べても、どちらでもかまいません。
並べ替えが必要な場合は、サーバー側で適切な処理を施す必要があります。

> ANo.2~4
文法上はどうあれ、<tbody>や<table>と<form>の位置関係をどの様に書いても
実装上は、<form>の中に<input>が入っていれば、そのvalueは送信されます。
(HTMLの文法でも、<form>の中に入っている<input>を送信する、となっていて、<table>との位置関係までは言及されていません)

>punipunipunikoさんへ
実装上は問題がなくても、
デファクトスタンダード(広く使われているブラウザに合わせる)ではなく、デジューレスタンダード((この場合は)W3Cが定義したHTML)に合わせるほうが良いと思います。
デファクトスタンダードは、IE以外は、その規格、仕様が出されていないことが多く、
バグなのか正常な動作なのかがわかりにくいことがあります。

この回答への補足

パラメータを取得するのはaaa.aspです
<form>のaction先です。

><input>の順番を変えたところで、送信する順番は不定です
この並び替えを必要としてるのではありません
あくまで、画面上で見た目並び変わっていたらいいだけです。

>デジューレスタンダード((この場合は)W3Cが定義したHTML)
一度、仕様を考えなおしてみたいと思います

補足日時:2008/03/07 10:58
    • good
    • 0

文法的にtbody直下にはtrしか置けない事になっています。


また開始タグと終了タグは正しく入れ子構造にする必要があります。
なので、tableの前にformを置くのが妥当になります。

javascriptの中身は見てませんが
たまたまソートしていない時に問題がなくても
スクリプトで操作した結果、予期しない動作になってもしかたがありません。
まずはform,/formの位置を直して試してみては。

この回答への補足

<form>を<table>の外に出しました

<form>
<table>
・・・・
</table>
</form>

でも駄目でした

補足日時:2008/03/06 18:00
    • good
    • 0

あれ?


送れますねw

#2は無視で^^;
    • good
    • 0

</THEAD>


<TBODY>
<form name="userlist" method="POST" action="aaa.asp">

こうなっているとFORMタグはテーブルを内包する状態と言えない。


</THEAD>
<form name="userlist" method="get" action="1.html">
<TBODY>
せめてこうすればTBODYを内包するので送信可能なはず。
    • good
    • 0

>>どのブラウザでも正常に動作するようにするには



そこらへんは結構面倒なはずなのでとりあえずスルー。

あれですよ。
まずは、テーブルソートのJavaScriptファイル外した状態で正常に動くんですか??

<form>~</form>
と<submit>だけあれば、とりあえず、「aaa.asp」で情報取得は可能かと思いますが。。。

その状態でもFirefox側で動きませんかね?

この回答への補足

質問に書いたソース例は例なので
正常かは不明ですが
実際にはちゃんと動いています
(パラメータを取れている)

情報が多くなってきたので
テーブルの並び替え機能を追加したかったんですが
FireFoxでは正常に動作してくれないのです
(並び替えを1度もしなければ正常です)

補足日時:2008/03/06 17:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!