我有一个小表单和一个链接,使用jQuery和POST提交此表单。我希望在表单页面上显示流程页面的HTML输出,而不使用AJAX进行刷新。但是,当我单击提交链接时,我的代码似乎不起作用。请有人指出我在这里做错了什么吗?非常感谢。
此致
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$('#myform').submit(function() {
$.post('demoprocess.php', $("#myform").serialize(), function(data) {
$('#results').html(data);
});
});
});
</script>
<form name="myform" id="myform" action="" method="POST">
<label for="name" id="name_label">Name</label>
<input type="text" name="name" id="name" size="30" value=""/><br>>
<label for="email" id="email_label">Email</label>
<input type="text" name="email" id="email" size="30" value=""/><br>
<a href="#" title="" class="pay-button" style="margin-top:5px;" onclick="document.myform.submit()">SUBMIT</a>
</form>
<!-- We will output the results from demoprocess.php here -->
<div id="results"><div>
答案 0 :(得分:5)
麻烦的是你绑定了一个 jQuery submit
处理程序,但却触发了 native DOM submit
方法。这不会触发submit
事件,因此永远不会通知jQuery处理程序。
您应该使用jQuery触发事件。在jQuery中执行此操作可能也是最简单的,而不是使用onclick
属性:
$('.pay-button').click(function(e) {
e.preventDefault(); // prevent the link's default behaviour
$('#myForm').submit(); // trigget the submit handler
});
请注意,这不是一个非常好的设计,IMO,因为没有Javascript的用户将无法提交您的表单。
答案 1 :(得分:1)
问题是您的表单不包含任何触发javascript submit
事件的元素
来自jquery文档.submit()
:
当用户尝试提交表单时,会将提交事件发送给元素。它只能附加到元素上。可以通过点击明确的
<input type="submit">
,<input type="image">
或<button type="submit">
或在某些表单元素具有焦点时按Enter键来提交表单。
因此,为了使.submit()
成功,您需要添加以下内容之一:
<input type="submit">
,<input type="image">
,或<button type="submit">
。
到您的表单,因此您需要添加以下内容:
<input type="submit" />
答案 2 :(得分:0)
你可以这样做:
document.forms[0].submit()
或
$('#myform').submit();
答案 3 :(得分:0)
尝试阻止表单提交时的默认行为:
$('#myform').submit(function(ev){
ev.preventDefault();
$.post('demoprocess.php', $("#myform").serialize(), function(data) {
$('#results').html(data);
});
});