1

私は同様の問題について多くの質問をしましたが、これを機能させることができないようです。私がやろうとしているのは、ボタンがクリックされたときに、フォームフィールドの値を「now」という単語に置き換えてから、フォームを送信することです。最初、HTMLフォームは次のようになります。

<tr id="row43" bgcolor="#FF0000">
<form id="form43" name="loggingUpdate" action="index.php" method="POST">
<td>PersonsName</td><td>SGS 1-26</td>
<td><input type="text" name="takeoff" id="takeoff43"/><a href='#' onclick='startTakeoff(43);return false;'><img alt='Start Now' src='brush_24.png' border='0'></a></td>
<td><input type="text" name="landing" /></td><td>0 Mins</td>
<td><input type="text" name="towHeight" /></td>
<td><input type="hidden" name="flightIndex" value="43"/><input type="submit" value="Update..." />  <a href=deleteEntry.php?flightIndex=43><img src="close_24.png" /></a></td>
</form></tr>

onclickによってトリガーされるJavascriptは次のとおりです。

function startTakeoff(flightIndex) { 
    var flightForm = document.getElementById("form"+flightIndex);
    var flightRow = document.getElementById("row"+flightIndex);

    flightRow.cells[2].innerHTML = "<input type=\"text\" name=\"takeoff\" value=\"now\"><a href=\"#\" onclick=\"startTakeoff(43);return false;\"><img alt=\"Start Now\" src=\"brush_24.png\" border=\"0\"></a>";
    flightForm.submit();
}

したがって、ボタンをクリックすると、セルの値が「now」に置き換えられ、フォームが送信されます。問題は、送信している間、変更された値が実際に送信されないことです。他のフィールドの1つ(たとえば、towHeight)に手動で何かを追加してボタンをクリックすると、正常に送信されます。つまり、ボタンがクリックされたときに送信されないのは「離陸」フィールドだけです。私はこれまでJavascriptを使ったことがないので、これは私には非常に奇妙に思えます。

背景として、HTMLを生成し、送信された入力を取得するPHPスクリプトがあります。したがって、いくつかの奇妙なIDがあります。http://ad7zj.net/logging/index.php 助け ていただければ幸いです。

4

1 に答える 1

1

.onsubmit()イベントを探しています。

そうは言っても、サーバーから時間を取得するのが最善かもしれません。これにより、タイムゾーンの全世界、夏時間の問題、および不正確な時間設定を持つコンピューターの数からあなたを救うことができます。

編集:

わかりました、あなたのコメントのおかげで私は何が起こっているのかわかると思います。

を使用してフォームを更新しようとしてい.innerHTMLます。 .innerHTMLかなり奇妙な獣であり、あらゆる種類の心痛に満ちています-その誘惑に屈しないでください。ブラウザは、実際にinnerHTML更新を適用する前に、Javascriptイベントが終了するまで待機しているようです。とにかく、それは私の推測です。最も単純な更新以外では、私はそのことを避けます。

これを核兵器:

  flightRow.cells[2].innerHTML = "<input type=\"text\" name=\"takeoff\" value=\"now\"><a href=\"#\" onclick=\"startTakeoff(43);return false;\"><img alt=\"Start Now\" src=\"brush_24.png\" border=\"0\"></a>";

代わりにこれを試してください:

// Assuming only one form with one name 'takeoff'
var el = document.getElementsByName("takeoff")[0];
el.value = 'now';

// The rest of the updates shouldn't matter -- the form is being submitted, nothing should be seen.
于 2012-09-18T21:19:10.290 に答える