インターネットと StackOverflow で解決策を探していますが、まだ思いつきません。開始するフォームがあります:
<div class="container_12">
<div id="masthead" class="grid_12">
<br/><h1>Form Builder</h1>
</div>
<div id="main-content" class="grid_8" style="margin-top:-5px">
<form action="" id="form" name="form">
<div id="formbuilder" name="formbuilder">
<label>Question:</label><input type="text" name="question1" id="question1"/><br/>
</div>
<button type="button" onClick="loadXMLDoc()">Add New Question</button>
<input type="submit" name="submit" id="submit"/>
</form>
</div>
<div id="sidebar" class="grid_4">
</div>
「新しい質問を追加」ボタンが押されると、次の JavaScript が実行されます。
var count = 1; //only executed once on the initial load.
function loadXMLDoc() //executed every time the button is pressed.
{
count++;
var xmlhttp;
if(window.XMLHttpRequest)
{//code for anything better than IE6
xmlhttp=new XMLHttpRequest();
}
else
{//IE6 or lower
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("formbuilder").innerHTML += xmlhttp.responseText;
}
}
xmlhttp.open("GET", "question.php?c=" + count, true);
xmlhttp.send();
}
その JavaScript は、非常に単純な php スクリプトである question.php から新しい入力フィールドを取得しています。
<?
echo '<label>Question:</label><input type="text" name="question'.$_GET['c'].'" id="question'.$_GET['c'].'"/><br/>';
?>
現在、一見するとすべてが正常に機能しています。ボタンを押すと、新しい質問フィールドが生成され、フォームに追加されます。ただし、ボタンを押す前に質問テキスト ボックスのいずれかに値を入力した場合、そのデータはすべて消えますが、直感的にはそうではありません。さらに面白いことに、これは Chrome と Firefox でのみ発生します。何らかの理由で、Internet Explorer 9 は意図したとおりに動作します。
明らかに私は何か間違ったことをしていますが、それが何であるかはわかりません。私はかなり長い間 AJAX を扱っていませんでしたが、これについて何か助けていただければ幸いです。ありがとう!