0

以下是我试图完成的代码,当用户单击提交按钮时,我的 javascript 函数将其 id='contact_form' 的表单的文本字段中的所有值设置为 null 而不加载页面。请让我知道如何修改以下代码以完成我一直在尝试做的功能。谢谢!!

<script type='text/javascript'>
    $(document).ready(function(){
        $('#love').click(function(e) {
            document.contact_form.name.value = '';
            alert('aloha!!');
            //stop the form from being submitted (not working fine)
            e.preventDefault();
        }
    }
</script>
<form name='abc' action='' id='abc' >
    <input type="submit" id='love' />
</form> 

我也尝试了以下功能,它运行良好,但它并没有阻止页面加载

<script type='text/javascript'>
    function js(){
        document.contact_form.name.value = '';
        //stop the form from being submitted (NOT WORKING!!)
        preventDefault();
    }
    }
</script>
4

5 回答 5

1

如果您尝试onsubmit="return false;"使用form标签,您的表单将不会被提交。不幸的是,它永远不会被提交。除非您不打算通过 AJAX 提交它,否则您必须onsubmit像这样修改您的事件:

<form onsubmit="return callFunction()">

function callFunction() {
    if(condition)
        return true;
    else
        return false;
}
于 2012-04-27T10:51:38.170 回答
1
$("#abc").submit( function() {
  // do everything you want.
   return false; //will prevent the reload.
});
于 2012-04-27T10:51:41.943 回答
0

要在表单提交时执行函数,您必须执行以下操作;

<form onsubmit="return validate();">
your form here
</form>

然后你可以签入一个名为“validate()”的函数(或任何你想调用的函数)

确保 validate() 函数在允许提交表单时返回 true,如果不允许提交页面,则返回 false。

还将 id 和名称放在您的输入元素上,这样您就可以更轻松地访问它们。

于 2012-04-27T10:51:15.340 回答
0

假设您有这样的 HTML:

<form>
<input type="text" id="text" />
<input type="submit" id='submit' value="clear above field without reloading" />
</form>

并且您希望在用户提交时清除文本字段值而不使用 jQuery 重新加载,那么以下脚本将是您的补救措施:

$(function(){
$('#submit').click(function(){
    $('#text').value('');
})
});
于 2012-04-27T11:00:13.907 回答
0

可以通过多种方式提交表单,而不仅仅是单击提交按钮。您应该真正注意submit事件,并取消它们preventDefault(而不是可能触发提交的点击事件)。请参阅@user1359163 的回答。

但你的问题似乎是 document.contact_form.name.value。文档对象没有属性contact_form,所以这会引发错误。preventDefault 没有执行,您的表单被提交并且您永远不会看到错误。将调试器设置为“停止错误”!

您可能想要类似的东西document.forms["contact"],但我不知道您的 HTML。输入元素的 id 选择器将是更好的选择。

于 2012-04-27T11:14:19.393 回答