0

ここには 2 つのフォームがあります。1 つ目は選択ドロップダウン選択で、投稿すると別のフォームが生成され、選択した数に基づいて金額入力ボックスが作成されます。この 2 番目のフォームは、入力ボックスからのデータを 2 つの配列に入れます。これはすべて完全に機能しますが、2 番目のフォームの送信ボタンに機能を追加しようとしています。ID「テーブル」のdivのコンテンツを表示および非表示にする関数「showcontet()」を作成しました。これは、フォーム外のボタンで使用すると完全に機能します。フォーム内の送信ボタンで使用すると、コンテンツが約 1 秒間表示されてから再び消えます。

    <head>
      <script type="text/javascript">
           showcontent = function(){
              var content = document.getElementById('tabl');
              content.style.display = 'inline';
           }

      </script>
        <?php 
    $userkey = array();
    $userval = array();
    $usernum = $_POST['usernum'];
    $total = 0;
    ?>


        <form action='MYPIE.PHP' method='POST'>
                HOW MANY SECTIONS?
                    <select name="usernum" value="<?php echo $usernum;?>">
                          <option>1</option>
                          <option>2</option>
                          <option>3</option>
                          <option>4</option>
                          <option>5</option>
                          <option>6</option>
                          <option>7</option>
                          <option>8</option>
                          <option>9</option>
                    </select>
                <input type="submit" name="submitnum" value="submit selection" />
        </form>


    <form action='MYPIE.PHP' method='POST'>     
        <?php 
            for ($i=1; $i<$usernum+1; $i++){
                echo '<input type="hidden" value="' .$usernum.'" name="usernum" />';
                echo "<br>insert key:   <input name='key".$i."' value='".$userkey[$i]."'>   insert value:   <input name='val".$i."' >";

            $userkey[$i] = $_POST["key".$i];
            $userval[$i] = $_POST["val".$i];
            }

        ?>
        </br>
        <input type="submit" value="submit" name="submit keys" onclick="showcontent()" />
    </form>

    </table>


    <div id="tabl" style="display:none;">
    content
    </div>    

悪いインデントをお詫びします。私はこれにかなり慣れていないので、助けてくれてありがとう

4

3 に答える 3

2

return falseブラウザーがフォームを送信してページをロードしないようにするには、イベント ハンドラーを使用する必要があります。

于 2012-07-06T12:26:34.593 に答える
0

2番目のボタンを「送信」ボタンではなく通常の「ボタン」にします。そうしないと、フォームの送信が実行されます。

また

フォームの「onsubmit」イベントに「showcontent()」関数を設定し、その関数がfalseを返すようにします。

onsubmit="return showcontent()"

function showcontent(){
    var content = document.getElementById('tabl');
    content.style.display = 'inline';

    $.ajax({
        type: "POST",
        url: "MYPIE.PHP",
        data: { usernum: $("select[name='usernum'] option:selected").val() }
        }).done(function() {
            alert('data posted');
    });

    return false;
}
于 2012-07-06T12:27:57.360 に答える
0

e.preventDefault(); を追加する必要があります。ブラウザがフォームを送信してページをロードするのを防ぐために、イベント ハンドラーに追加します。

return false は使用しないでください。これは望ましくない他の副作用です。http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/を参照してください

于 2012-07-06T12:31:39.737 に答える