0

javascript で送信機能を使用してフォームを送信しようとしています。送信ボタンを使用しない理由は、本当にフォームを送信するかどうかをユーザーに尋ねたいからです。コードは次のとおりです。

<?php    
if(isset($_POST['submit1']))
die("Submit successfull!");
?>

<!--Javascript submit question.-->
<script type="text/javascript">
function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        return true;
    }

    else {
        alert('You have not submitted this form');
        return false;
    }
}
</script>

<!--The form-->
<form action='test.php' method='POST'>
<input type='button' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />
</form>

結果: ポップアップはうまく機能します。フォームを送信したくないだけなので、「送信に成功しました!」と表示されます。決して現れません。

ページに実際の送信ボタンを追加しても、メッセージは表示されません。POSTデータが機能しないようです。しかし、送信ボタンにPHPコードとダイ関数を追加すると、機能し、「REal Submit Works」が表示されます。これは、ボタンコードが最初であるため、奇妙です。

<?php
if(isset($submit1))
die("Submit successfull!");
if(isset($_POST['realsubmitbutton']))
die("REal Submit Works");
?>

また、onClick を変更して、javascript 送信機能だけを含めるようにしました。このように: onClick="this.form.submit();". しかし、それもうまくいきません。私の質問は、コードの何が問題なのか、なぜ機能しないのかということです。

ボタンは POST で値を送信できませんか?

4

5 に答える 5

1

onclick問題は、ハンドラーを介してフォームを送信していることです。つまり、ボタンは送信の一部として押されません。

trueその関数から戻って、必要な動作を取得できます。

本当に、これは悪い考えです。私たちの多くは、[送信] をクリックするよりも、単にフォーム フィールドで Enter キーを押すことを好みます。フォームハンドラーでは、!empty($_POST)代わりに確認してください。「よろしいですか」機能をonsubmitフォームのアクションとして入れます。

于 2012-04-15T22:54:19.067 に答える
0

ボタンをクリックする代わりに、フォームで直接「onSubmit」イベントを使用します。実際に送信したくない場合は、「false」を返します。

于 2012-04-15T22:55:46.413 に答える
0

私はあなたのすべての答えを読み、コードを完成させました。ボタンをクリックするか、Enter キーを押すかの両方で機能するようになりました。JavaScript はどちらの方法でも正しく実行され、フォームが送信されます。これはコードです:

<?php
if(!empty($_POST['justaname']))
die("Submit successfull!");
?>

<!--Javascript submit question.-->
<script type="text/javascript">
function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        document.getElementById("myform").submit();
    }

    else {
        alert('You have not submitted this form');
    }
}
</script>

<!--The form-->
<form action='test.php' method='POST' id="myform" onSubmit="event.preventDefault(); question_submit();">
<input type="text" name='justaname' />
<input type='button' name='submit1' value='Submit' onClick="question_submit()" />
</form>

すべての回答に感謝し、これが誰かの役に立てば幸いです。

于 2012-04-18T12:07:03.930 に答える
0

関数を変更して、フォームへの参照を取得し、submit() メソッドを呼び出すようにします。

function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        document.getElementById("myForm").submit();
        return true;
    } else {
        alert('You have not submitted this form');
        return false;
    }
}

また、フォームに id が含まれるようにフォーム HTML を更新し、HTML ボタンを変更して question_submit() 関数を呼び出すようにします。実際のビジネス ロジックは関数に任せて、HTML をきれいに保ちます。最後に、属性がすべて小文字であることを確認してください。これは機能に影響を与えるべきではありませんが、小文字の属性名を使用する方がきれいです:

<form action='test.php' method='POST' id='myForm'>
    ...
    <input type='button' name='submit1' value='Submit' onclick="question_submit();" />

</form>
于 2012-04-15T23:05:57.037 に答える
0

orは、入力が送信タイプの場合にのみ機能しますtruefalseだから、あなたは変わるべきです

<input type='button' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />

為に

<input type='submit' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />

あなたの関数では、ユーザーが受け入れたときにのみ送信されます。または多分、あなたは使うことができます

<form action='test.php' method='POST' onClick="return question_submit()">
  <input type='submit' name='submit1' value='Submit' />
</form>
于 2012-04-15T23:10:03.867 に答える