Javascript 是否可以仅刷新表单?

Javascript 是否可以仅刷新表单?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个表单,当它提交到一个div时,它会发布到一个div。好吧,所以我发现了一个问题,我得到了两次提交,所以我尝试应用我找到的一些jquery插件,但是它们没有用,因为如果你双击的速度足够快,我仍然得到了两次提交。从这些我发现的,我看到了最好的方法,以防止它的使用 if (this.beenSubmitted) return false; else this.beenSubmitted = true; 但是,我注意到,如果表单需要再次发送,用户必须刷新页面才能发送表单。在我的情况下,我

我有一个表单,当它提交到一个div时,它会发布到一个div。好吧,所以我发现了一个问题,我得到了两次提交,所以我尝试应用我找到的一些jquery插件,但是它们没有用,因为如果你双击的速度足够快,我仍然得到了两次提交。从这些我发现的,我看到了最好的方法,以防止它的使用

 if (this.beenSubmitted) return false;
 else
 this.beenSubmitted = true;
但是,我注意到,如果表单需要再次发送,用户必须刷新页面才能发送表单。在我的情况下,我希望他们能够发送后再次发送,(我不矛盾自己,因为这将是不同的内容)。为了更好地解释这一点,此表单发布了一些想法。如果你想发布两个不同的想法,你必须刷新页面才能发布。如果你点击的速度足够快,防止重复提交将有助于避免两次提交相同的想法。因此,我所做的是添加了“5000”:

所以,现在它刷新了我的页面。但是我有点挑剔,哈哈。所以我觉得整个页面都要刷新很烦人。如果你输入的内容被刷新了怎么办。我总是可以降低5000,但我仍然觉得很烦人,如果你开始浏览网站或放大,你最终会刷新

所以,我的问题是,有没有办法刷新表单?或者是一种更好的方法来防止双重提交,这种方法在这种情况下确实有效(你可以在几秒钟后提交)

以下是脚本:

<script type="text/javascript">
$(document).ready(function(){
$("form#myform").submit(function() {
        var addcontent = jQuery('#addcontent').attr('value');

        if ( addcontent.replace(/\s/g,"") == "" ) return false;
        if (this.beenSubmitted) return false,5000;
            else
            this.beenSubmitted = true;

$.ajax({
type: "POST",
url: "post.php",
data:"addcontent="+ addcontent,
success: function(){blah blah blah, ton sof code here including pagintion here, insert into a div here also, if u need this let me know.
});
</script>

$(文档).ready(函数(){
$(“form#myform”).submit(函数(){
var addcontent=jQuery('#addcontent').attr('value');
if(addcontent.replace(/\s/g,“”=“”)返回false;
如果(提交的)返回值为假,则为5000;
其他的
this.beenSubmitted=true;
$.ajax({
类型:“POST”,
url:“post.php”,
数据:“addcontent=“+addcontent,
success:function(){blah blah blah,这里有很多代码,包括这里的分页,在这里插入一个div,如果需要,请告诉我。
});
我的Jquery和Ajax知识并不是最好的


感谢帮助=}

为什么不使用this.beenSubmitted=true方法并将其与超时相结合?例如,在5000ms后,执行超时并将this.beenSubmitted设置为false。

上面的链接是关于在submit按钮上放置计时器的,这样你就不能在3秒内再次单击它了

<script>
var submitTimer = new Collate(3000);
</script>
<form action="post" onsubmit="return submitTimer.idle();">

var提交者=新的对照品(3000);
声明:

  return false, 5000;
将始终返回
5000
,使用
false
是多余和无意义的

要在不重新加载页面的情况下重置表单(在某些浏览器中不一定会重置表单),请使用重置按钮或调用表单的重置方法。如果表单已重置,则可以使用侦听器更新BeensSubmitted属性

自表单发明以来,表单的多次提交一直是一个问题,它通常在服务器上处理(如果收到两个相同的请求,则忽略第二个)


在客户端使用脚本是不可靠的,因为您不知道服务器在做什么,您必须猜测表单是否需要重新提交。

禁用提交处理程序中的提交按钮,然后在提交的成功处理程序中重新加载表单。不确定问题出在何处。您的
if else
语句是错误的有点乱。如果(this.beenSubmitted)返回false,5000;@elclarn在提交表单时超时5秒,这是什么?
。但是如果执行false,则需要在插入更多表单之前刷新浏览器。这就是为什么我将计时器设置为false而不是true。(如果设置为senece)抱歉,我不明白您插入新表单的意思:)我以为你想防止双重发布?这里的超时非常合理。用户单击“发送”后,你用this.beenSubmitted阻止表单,并在xxx秒后将this.beenSubmitted再次设置为false,以允许发布另一个想法。我想这就是我需要的。谢谢!
  return false, 5000;