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

お世話になります。
下記のように行数が10行のテーブルがあります。

<table id="tbl1">
<tr>
<td>1</td><td><input type="text" id="txt1"></td>
</tr>

<tr>
<td>2</td><td><input type="text" id="txt2"></td>
</tr>

省略

<tr>
<td>10</td><td><input type="text" id="txt10"></td>
</tr>
</table>

削除ボタンを押下すると1行目をdeleteRow()で削除し、
連番とテキストフィールドのidを1から振り直すようにしてあります。
ここまでは問題なく動作しますが、submit直前の入力チェック
で下記のようにしてもidが1,1,2,3,4,5,6,7,8のように取得されます。idの振り直しは出来ないのでしょうか。
ブラウザはIE6を使用しています。
よろしくお願いします。

var vRows = document.getElementById("tbl1").rows.length;
for (var vIndex = 1; vIndex <= vRows; vIndex++) {
if (document.getElementById("txt" + vIndex).value) == "") {
alert("未入力項目があります。");
}
}

A 回答 (2件)

> idの振り直しは出来ないのでしょうか。


できますよ。

> var vRows = document.getElementById("tbl1").rows.length;
> for (var vIndex = 1; vIndex <= vRows; vIndex++) {
> if (document.getElementById("txt" + vIndex).value) == "") {
> alert("未入力項目があります。");
> }
> }
この部分を見る限り問題はなさそうなので、
削除の時にtxt1が2つ残るように削除しているか、
idの振り直しの時にtxt1が2つ作られていると思います。

削除の方法、IDの振り直しの方法を見直してみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
idの振り直しは可能ということで
元のソースをもう一度、一つ一つチェックした所
原因がわかりました。
実は質問の際に元のソースをかなり省略してしまったのですが
下記のようにid属性とname属性の値が同じだったためこのような
現象になりました。
ありがとうございました。

<td>1</td><td><input type="text" id="txt1" name="txt1"></td>

お礼日時:2008/06/19 13:28

ソースの中で、insertRow()がありますか。


ないの場合、ソースは以下に修正:
var vRows = document.getElementById("tbl1").rows.length;
for (var vIndex = 1; vIndex <= vRows; vIndex++) {
var txtbox = document.getElementById("txt" + vIndex)
if (txtbox && txtbox.value == "") {
alert("未入力項目があります。");
}
}
そして、JavaScriptエラーがない。
idの振り直しも出来できます。でも、難しいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
idの振り直しは可能ということで
元のソースをもう一度、一つ一つチェックした所
原因がわかりました。
実は質問の際に元のソースをかなり省略してしまったのですが
下記のようにid属性とname属性の値が同じだったためこのような
現象になりました。
ありがとうございました。

<td>1</td><td><input type="text" id="txt1" name="txt1"></td>

お礼日時:2008/06/19 13:25

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