2013-07-13 180 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

相關問題