2013-07-13 144 views
0

我有一个表单,但我必须点击两次按钮才能提交。我的代码是:jquery表单提交需要两次点击提交发送

<script> 
    function processorform(id) 
    { 
     jQuery('.sp-poll-'+id+' form').submit(formProcess); 

     function formProcess(e) 
     { 
      e.preventDefault(); 

      var poll = id; 
      answer = $('input[name=answer]:checked').val(), 
      div  = $(this).parent(), 
      action = $(this).attr('action'); 

      $(this).show(); 
      updatePoll(action, poll, answer); 
      $("#poll-"+id).hide(); 
    } 
} 
</script> 

形式:

<form method="post" action="<?php echo $postFile;?>" class="format" id="spe_form-<?php echo $pollid; ?>" onsubmit="processorform('<?php echo $pollid; ?>');return false;"> 
    <input type="hidden" name="poll" value="<?php echo $pollid; ?>"/> 
    <input type="hidden" name="backurl" value="<?php echo $thisPage; ?>"/> 
</form> 

一切正常,除了不必点击提交两次罚款。

回答

1

提交将调用在线提交处理程序的第一个点击:

onsubmit="processorform('<?php echo $pollid; ?>');return false;" 

其中要求processorform(),防止正常表单提交由于return false;

processorform()功能,反过来,结合一个通过jQuery提交处理程序,我认为有什么不一样的形式(尽管你不显示包含表单元素的HTML):

jQuery('.sp-poll-'+id+' form').submit(formProcess); 

因此,在下一次点击时,它将再次执行内联处理程序再次运行上述函数,并且现在将执行从先前点击所界定的提交处理程序formProcess()

我只能假设,实际提交从以下线路发生:

updatePoll(action, poll, answer); 

...这就要求你没有显示的功能。

我不明白怎么形成的甚至被提交给它不包含任何可见的区域或按钮,但无论如何...

我在修复点击两次发出最简单的方法猜测会是这样的:

function processorform(id) { 
    var $form = jQuery('.sp-poll-' + id + ' form'), 
     poll = id, 
     answer = $('input[name=answer]:checked').val(), 
     div = $form.parent(), 
     action = $form.attr('action'); 

    $form.show(); 
    updatePoll(action, poll, answer); 

    $("#poll-" + id).hide(); 
} 

...虽然不知道你并没有在这个问题包含的东西我不能肯定它会成功。

+0

Tht's funtion没有improtant但这种情况下的形式提交反正作品如果没有投产,that's功能仅用于呼叫其他脚本,并上传结果存入数据库中,问题处理器it's并双击提交,另一方面,我需要使用的功能,因为我有更多的一种形式,并在每种情况下,每种形式有不同的ID提交,谢谢你的帮助 – user2536883

+0

噢,好现在完美的作品,最好的问候你的帮助,我看到th eproblem我有双重功能到其他yeap,谢谢你的帮助 – user2536883

+0

在一般意义上嵌套功能并没有错。在你的情况下,这本身不是问题,问题在于你在第一个内部绑定了第二个提交处理程序。 – nnnnnn

0

可能有语法错误,以及:

function processorform(id) 
{ 

jQuery('.sp-poll-'+id+' form').submit(formProcess); 

// missing '}' ??? 

<script> // this is already a script, why start a new script tag? 

function formProcess(e) 
{ 
e.preventDefault(); 

var poll = id; 

answer = $('input[name=answer]:checked').val(), 
div  = $(this).parent(), 
action = $(this).attr('action'); 



$(this).show(); 
updatePoll(action, poll, answer); 

$("#poll-"+id).hide(); 


} 

} // too many '}' ?? 
</script> // see above 

上面的代码将在 “运行”

  • <script>将通过一个功能几乎可以无视
  • 功能是好的

但是从粗略的语法来看,问题是,它是否真的在做wha你打算?

+0

没有对不起错误时复制粘贴 – user2536883

+0

你可以看到现在 – user2536883

+0

问题it's当我按下提交我需要给2次作品,it's唯一的问题 – user2536883

相关问题