1

我认为这会起作用,也许我错过了什么?我该怎么做才能调用 javascopt 提交事件?

谢谢,

约翰

<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"

第二个问题是$('myform');选择<myform>元素。用于#myForm按 ID 选择元素。

第三个问题是return preventDefault();

preventDefault是事件对象的方法,而不是全局方法,不应返回。

您需要捕获事件对象(它是函数的第一个参数)并在其上调用方法:

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

第四(向 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 回答