送信ボタンをクリックすると、フォームがあります:
ここに私のコードがあります
<?php
if(isset($_POST['btn'])){
//do some task
?>
<script type="text/javascript">
var e = document.getElementById('testForm'); e.action='test.php'; e.submit();</script>
<?php
}
?>
<form name="testForm" id="testForm" method="POST" >
<input type="submit" name="btn" value="submit" autofocus onclick="return true;"/>
</form>
フォームを送信できません、onClickでjavascriptコードを呼び出すと機能します。このコードの問題は何ですか。
If関数内でjavascriptをエコーするだけです
<form name="testForm" id="testForm" method="POST" >
<input type="submit" name="btn" value="submit" autofocus onclick="return true;"/>
</form>
<?php
if(isset($_POST['btn'])){
echo "
<script type=\"text/javascript\">
var e = document.getElementById('testForm'); e.action='test.php'; e.submit();
</script>
";
}
?>
このようにすべてのJSを設定できるため、HTMLの準備ができる前に実行されません
$(document).ready(function() {
// some code here
});
これはjQueryであるため、ヘッドセクションに含めてください。 onloadではなくjQueryを使用する理由 も参照してください。
スクリプトの実行時には、DOMが完全にロードされていないため、ボタンは存在しません。最も簡単な解決策は、フォームの後にスクリプトブロックを配置することです。
別の解決策は、window.onload
イベントをキャプチャするか、 jQueryライブラリー (このJavaScriptが1つしかない場合はやり過ぎ)を使用することです。