IE4では正常に動くのですがIE3ではエラーになるのは?
[上に]
[前に]
[次に]
かよ
1999/12/02(木) 11:06:22
同じ名前(indata)の入力項目が6個あり、値を入力して実行ボタンを押しsubmitした時に、空白の項目にはゼロをセットしたいのですが、
以下のコードは、IE4では正常に動くのですが、IE3では"indata[i]はオブジェクトではありません。"というエラーが出てしまいます。
IE3ではオブジェクトの配列のような使い方はできないのでしょうか?
分かる方はご教授ください。
よろしくお願いします。
<FORM NAME="f_main" onSubmit="on_submit(this);" ACTION="XXXX.asp" METHOD="POST">
<INPUT TYPE=text NAME="indata" SIZE="10" MAXLENGTH="3">
//**********************************************************
//* NAME : on_submit
//* DESCRIPTION : 入力値が空の時、0をセットする
//**********************************************************
function on_submit(p_form) {
for (i=0; i < p_form.indata.length; i++){
if (p_form.indata[i].value=="") {p_form.indata[i].value="0"};
}
return(true);
}
P初心者
1999/12/02(木) 11:38:14
>for (i=0; i < p_form.indata.length; i++){
を
for (i=0; i < 6; i++){
にすると、どうなります?
っていうか、p_form.indata.lengthはコントロールの個数???
きたむら
1999/12/02(木) 15:32:19
うちのWin95+IE3.02でも、かよさんと同じになることを確認しました。
オブジェクトのNAMEを同じにして配列化するのは、IE3ではダメっぽいです。
てことは、p_form.elements[i].nameを全部チェックして、=="indata"になってるのを抜き出すしかない?
かよ
1999/12/03(金) 13:18:47
きたむらさん、わざわざ確認してくださってありがとうごさいます。
早速、p_form.elements[i].nameを使用して、動かしてまたのですか、これもまたIE4では正常に動きますが、IE3では強制終了されてしまうようになりました。
function on_submit(p_form) {
for (i=0; i < p_form.length; i++){
if ((p_form.elements[i].name=="indata") && (p_form.elements[i].value=="")){
p_form.elements[i].value="0";
}
}
return(true);
}
というわけで、IE4以降でページを使用してもらうように表示することにしました。
きたむら
1999/12/03(金) 17:16:05
いえいえ。こちらのラウンジを読んでると、知らないことがいっぱい出てくるので、自分で確認しては「ひゃーそうだったのか」という毎日です。
今回もかよさんのおかげで「NAMEが同じだと配列になる」ってことを知ったのでした。
(手元のマニュアルが英語なのでなかなか全部目を通せないっす。)
ところで、
> for (i=0; i < p_form.length; i++){
この部分を p_form.elements.length に直すとIE3でも動くですよ。
(でもこの機会にIE3の人がIE4に移行するならそれもまた善哉)
[上に]
[前に]
[次に]