1

これでうまくいくと思ったのですが、何か見逃したのでしょうか?javascropt 送信イベントを呼び出すにはどうすればよいですか?

ありがとう、

ジョン

<html>
<body>
<form name='myForm' action='formprocess.php' method='get'>
Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br />
Time: <input type='text' name='time' />
</form>
<script type="text/javascript">
    var frm = $('myform');
    frm.submit(function () {
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                alert('ok');
            }
        });

        return preventDefault();
    });
</script>
<div id="box"> </div>
</body>
4

2 に答える 2

2

最初の問題はname='myForm'. name 属性 (フォームコントロール( など)を除く<input>) は廃止されました。id代わりに属性を使用してください。

id="myForm"

2 番目の問題は、どちらが要素$('myform');を選択するかです。ID で要素を選択するために<myform>使用します。#myForm

3 つ目の問題はreturn preventDefault();.

preventDefaultグローバルではなく、イベント オブジェクトのメソッドであり、返されるべきではありません。

イベント オブジェクト (関数の最初の引数) をキャプチャし、そのメソッドを呼び出す必要があります。

frm.submit(function (evt) {
    …
    evt.preventDefault();
});

4 つ目 (Tieson T. さんに敬意を表します) は、フォームを送信する前に、フォームに送信ボタンが必要です。

于 2013-07-30T06:23:18.870 に答える
0

.submit()フォームを送信するのではなく、イベント ハンドラーをイベントに追加しますonsubmit。まだ送信ボタンが必要です。これはテストされていませんが、動作するはずです:

<form id="myForm" action='formprocess.php' method='get'>
    Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br />
    Time: <input type='text' name='time' />
    <button type="submit">Send</button>
</form>
<script>
    $(function(){
        $('#myform').on('submit', function (e) {

            e.preventDefault();

            $.get(
                $(this).attr('action'),
                $(this).serialize(),
                function (response, status, jqxhr) {
                    alert('ok');
                }
            });

        });
    });
</script>
于 2013-07-30T06:29:19.423 に答える