1

我有一组 HTML 表单链接,我在点击时提交,其 ID 为“ajaxForm”

    for ($year = 2008; $year <= intval(date('Y')); $year++) {
    if ($year == $currentYear)
        continue;
    echo '<div style="float:right;padding-right:20px;"><form name="year' . $year . 'Form1" id= "ajaxForm" action="/managementDashboard#visibleTab-5" method="post"><input name="getRecordsFor" type="hidden" value="' . $year . '"><a id="buttonRed" href="javascript:document.year' . $year . 'Form1.submit();">' . $year . '</a></form></div>' . chr(10);
}

但是,我使用 jQuery 而不是默认提交,而是使用以下方法发布数据:

        jQuery("form#ajaxForm").click(function(event) {

        /* stop form from submitting normally */
        event.preventDefault(); 

        /* Send the data using post and put the results in a div */
        jQuery.post( '/ajaxFunctions?mgmtDbrdPge=5', jQuery("#ajaxForm").serialize(),
        function( data ) {
            jQuery( "#visibleTab-5" ).empty().append( data );

        }
    );
    });

问题是它提交的是所有表单,而不是我单击的单个表单。有没有办法可以防止这种情况,而不必为每个单独的表单编写 jQuery 链接?

更新 - 我接受了一个答案,因为他的方法是合法的,但我意识到我的问题是什么。而不是 jQuery("#ajaxForm").serialize(),我应该把它写成 jQuery(this).serialize() 只调用通过点击提交的数据,而不是所有具有该 ID 的表单。

4

1 回答 1

3

看起来您有多个具有相同 id 的表单ajaxForm。确保它是唯一的

如果您知道页面中 Ajax 表单的 id .. 那么您可以这样做

jQuery("form#ajaxForm ,form#myForm , form#myFormThird ").click(function(event) {

这将确保多个元素附加到同一个事件处理程序..

更新的代码 如果您不知道 id,那么您可以使用 for 循环进行迭代并附加事件..

$('form').each(function() {

    $(this).click(function(event) {

       // Your Function
    }
});

还要确保你使用 .on() 来附加你的事件.. 而不是仅仅单击以便委托事件..

jQuery("form#ajaxForm").on('click',function(event) {
于 2012-09-24T17:36:40.897 回答