複数の選択を含むフォームを作成しました。オプションを選択すると、次の選択要素が有効になり、Ajax と PHP を使用して値で更新されます。
ただし、前のオプションを変更すると、選択フィールドが変更された後にのみリセットされ、変更されたものの下のすべての選択がリセットされるわけではありません。
では、最後に変更された要素の下にあるフォーム要素をすべてクリアするにはどうすればよいでしょうか?
<form action="" method="post">
Year:
<select onchange="updateField(this.value, 'brand', 'Year', 'Marke_vozila')">
<option>Select year..</option>
%year%
</select>
<br />
Brand:
<select id="brand" onchange="updateField(this.value, 'model', 'Marke_vozila', 'Model_vozila')">
</select>
<br />
Model:
<select id="model" onchange="updateField(this.value, 'type', 'Model_vozila', 'Tip_vozila')">
</select>
<br />
Type:
<select id="type" onchange="updateField(this.value, 'uitvoering', 'Tip_vozila', 'izvedba_vozila')">
</select>
<br />
Uitvoering:
<select id="uitvoering">
</select>
<br />
<input type="submit" name="submit" class="submit" value="Submit" />
</form>
アヤックス:
<script>
function updateField(str, id, prevvalue, value)
{
if (str=="")
{
document.getElementById(id).innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","inc/form_rest.php?q="+str+"&prevvalue="+prevvalue+"&value="+value,true);
xmlhttp.send();
}
</script>