0

フォーム送信ボタンをクリックした後、ユーザーを別のページにリダイレクトしようとしています。

フォームの特定の部分に自動的に入力してフォームを送信し、最終的にユーザーを別のページにリダイレクトするいくつかのイベントを発生させようとしています。

リダイレクトを期待してすべてが機能します。いくつか試してみましたが、フォームの送信後にリダイレクトが機能しませんでした。

また、フォームが正常に送信される前にユーザーをリダイレクトしたくありません。

これが私のコードです:

<form id="usp_form" method="post" enctype="multipart/form-data" action="">
  <input class="usp_input" type="text" name="user-submitted-title" id="user-submitted-title" value="" />
  <input class="usp_input" type="text" name="user-submitted-url" id="user-submitted-url" value="">
  <input class="usp_input" type="text" name="user-submitted-tags" id="user-submitted-tags" value="">
  <input class="usp_input" type="text" name="user-submitted-category" id="user-submitted-category" value="">
  <textarea class="usp_textarea" name="user-submitted-content" id="user-submitted-content" rows="5"></textarea>
  <input class="hidden" type="hidden" name="user-submitted-name" value="<?php echo $current_user->user_login; ?>">

  <input onClick="copyText();copyText2();copyText3();handleClick();" class="usp_input" type="submit" name="user-submitted-post" id="user-submitted-post" value="Submit Post">
</form>



<script language="javascript" type="text/javascript">
function copyText3() {
var output1 = document.getElementById("edit1").innerHTML;
var output2 = document.getElementById("edit2").innerHTML;
document.getElementById("user-submitted-title").value = output1 + ', ' + output2;
}
</script>

<script language="javascript" type="text/javascript">
function copyText2() {
var output1 = document.getElementById("edit1").innerHTML;
var output2 = document.getElementById("edit2").innerHTML;
var output3 = document.getElementById("template").innerHTML;
document.getElementById("user-submitted-tags").value = output1 + ', ' + output2 + ', ' + output3;
}
</script>

<script language="javascript" type="text/javascript">
function copyText() {
var output = document.getElementById("templatebody").innerHTML;
document.getElementById("user-submitted-content").value = output;
}
</script>

<script language="javascript" type="text/javascript">
function handleClick() {
window.location.href='http://website.com/';
}
</script>
4

2 に答える 2

0

送信ボタンはリクエストを起動しますが、ボタンを押すとリダイレクトリクエストも定義しているため、一方が他方をオーバーライドします(どちらがブラウザに依存するかはわかりません)。

標準の送信の代わりに Ajax リクエストを起動し、Ajax リクエストからの応答を受け取ったときにのみリダイレクトを実行して、情報が失われていないことを確認したい場合があります。

于 2013-03-08T07:01:00.067 に答える
0

そのままのようにコーディングするのではなく、HTML の外でイベントに関数を登録する必要があります (HTML、JS、および CSS を分離することをお勧めします)。

ここでイベントのバブリングについて理解できます: http://javascript.info/tutorial/bubbling-and-capturing

コードの動作を確認したいだけで、フォームを検証しない場合は、「return false ;」を追加するだけです。onclick 属性の最後に。

編集:申し訳ありませんが、フォームを送信してからリダイレクトします。これは ajax リクエストで行うことができます ( http://www.w3schools.com/xml/xml_http.aspを参照)。フォームを ajax で送信してから、リダイレクトします。

しかし、IMO、これはサーバー側の動作です。おそらく、フォームの送信を処理する動的言語 (Python、PHP、ASP ... ?) を使用しています。プロセスの後にリダイレクトする必要があるのはここです。

于 2013-03-08T07:02:09.793 に答える