基本的に、私の HTML は次のようになります。
<form method="post" name="htmlform" onsubmit = "checkFields()">
<table style="width: 479px;" border="30" cellspacing="3" cellpadding="10">
<tbody>
<tr>
<td valign="top"><span id="firstNameSpan" >First Name *</span></td>
<td valign="top"><input type="text" name="first_name" id="first_name"
size="30" maxlength="50" /></td>
</tr>
<tr>
<td valign="top"><span id = "lastNameSpan" >Last Name *</span></td>
<td valign="top"><input type="text" name="last_name" size="30" maxlength="50"/>
/td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><input type="radio" name="sex"
value="male" /> Male <input type="radio" name="sex"
value="female" /> Female</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><input type="submit" value="submit"
/></td>
</tr>
</tbody>
</table>
</form>
フォームが送信されると、onsubmit() イベントは first_name テキストフィールドが空白かどうかをチェックします。空白の場合は、その左側のラベルまたはスパンが出力に追加されます。"first name*" + "you must enter a first name" など姓と性別。
問題は、テーブル内のテキストが appendchild で更新されないことです。ステートメントをデバッグ用のアラートに含めると、メッセージが追加されてから消えます。
onsubmit = "checkFields()" の JavaScript コードは以下のとおりです。
function checkFields() {
var firstName = document.getElementById("first_name").value;
var lastName = document.getElementById("last_name").value;
if (firstName == "") {
//<span style='color:red'> Please enter a first name </span>
var nameHint = " Please enter a first name";
var node = document.getElementById("firstNameSpan");
//alert(node.appendChild(document.createTextNode(nameHint)) );
//not working
node.appendChild(document.createTextNode(nameHint));
} if (lastName == "") {
//additional code
}
}
よろしくお願いします。また、JavaScript デバッガーはありますか?
よろしく
デビッド・D