2009-02-12 68 views
2

SO上也有類似的問題,但似乎沒有解決這個問題。jquery表單插件&編程提交

下面是我的情況的一個非常簡化的變體。 Drupal/PHP網站 - 我有一個表單提交按鈕,我正在使用jquery.form插件ajax-ly提交。如果我使用提交(#submit)按鈕,它工作正常。

現在,我想以編程方式使用窗體外的另一個按鈕(#submit2)觸發該按鈕。我可以使用jquery click()函數來做到這一點,但返回的內容不會像我期望的那樣進入ajax目標。

我沒有太多的自由來重新組織這段代碼,否則我會的。

(請注意我試圖使這段代碼容易讓你通過SRC-ING jQuery和從我的網站形式的插件運行。)

想法?謝謝!

<?php 
if ($_REQUEST['submit'] == 'Submit') { 
    print 'ajax returns ... ' . $_REQUEST['text']; 
    exit; 
} 
?> 
<html> 
<head> 
    <script type="text/javascript" src="http://enjoy3d.com/scripts/jquery-1.2.6.js"></script> 
    <script type="text/javascript" src="http://enjoy3d.com/scripts/jquery.form.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('#form').ajaxForm({ target: $('#span') }); 
      $('#submit2').click(function() { $('#submit').click(); }); 
     }); 
    </script> 
</head> 
<body> 
    <span id='span'>target span</span> 
    <form method='post' id='form'> 
     <input type='text' name='text' size='50' /> 
     <input type='submit' id='submit' name='submit' value='Submit'/> 
    </form> 
    <input type='submit' id='submit2' name='submit2' value='Submit Too?' /> 
</body> 
</html> 

回答

0

您可能還需要return false觸發形式從非形式提交按鈕提交按鈕點擊事件代碼之後。例如:

<script type="text/javascript"> 
    $(function() { 
    $('#form').ajaxForm({ target: $('#span') }); 
    $('#submit2').click(function() { $('#submit').click(); return false; }); 
    }); 
</script> 

它適用於我。那是你在找什麼?

+0

真的,它適合您嗎?當我嘗試你的建議時沒有任何區別。單擊submit2導致頁面重新加載,只顯示ajax結果內容(輸入字段消失) – 2009-02-12 06:38:32

0

你試過給一個名稱的形式,而不是

$('#submit2').click(function() { $('#submit').click(); }); 

$('#submit2').click(function() { document.myForm.submit(); }); 

這應該做同樣的事情,有如果表單被Ajax化的提交按鈕點擊。

+0

jquery.form插件將功能綁定到提交按鈕的click事件,因此直接提交表單不起作用 – 2009-02-12 15:43:22

1

我設法解決了與你相似的情況。如果模擬點擊submit1的唯一目的是提交表單,則可以嘗試:

$('#submit2').click(function() { 
    $('#form').trigger('submit'); 
});