【问题标题】:simulating the "add another item" ajax call in drupal 7 using jquery使用 jquery 在 drupal 7 中模拟“添加另一个项目”ajax 调用
【发布时间】:2011-11-16 13:55:38
【问题描述】:

我正在尝试让 jQuery 将 mousedown 事件发送到 Drupal 7“添加另一个项目”按钮的多值字段,然后等到 ajax 调用完成后再用来自jQuery 对象中的元素(具有多个元素)。我需要使用循环来循环浏览此 jQuery 对象中的元素(成分),但无论我尝试什么,我的页面都会死掉......

目前,我有以下内容:

i = 0;
ingredients = newHtml.find('.recipe_ingredients > li');
ingredientsLength = ingredients.length;

$('#edit-field-ingredients-und-add-more').mousedown();

while(i < ingredientsLength) {
    if ( document.readyState !== 'complete' ) {
        // code to fill in the new blank row with data from 'ingredients'
        $('#edit-field-ingredients-und-add-more').mousedown();
        i++;
    }        
}

因为我还不知道如何使用 jQuery(或使用 Drupal)自己发出 ajax 调用,所以我一直在尝试使用 .readyState 和其他类似 hack 的方法来检查调用是否已完成。我只是不确定下一步该尝试什么!

我这样做是完全错误的吗?有没有一种直接的方法可以使用 jQuery 进行“添加另一个项目”多值字段 ajax 调用?任何帮助将不胜感激...

【问题讨论】:

    标签: ajax drupal jquery while-loop


    【解决方案1】:

    我不确定 Drupal 7 中是否有更好的方法,但在 Drupal 6 中,您可以使用 jQuery(document).ajaxCompletesettings.url 属性来判断特定的“添加另一个项目”点击何时完成。

    开始于:

    (function($) {
        $(document).ajaxComplete(function(e, xhr, settings)
        {
            alert(settings.url);
        });
    }(jQuery));
    

    为您的字段确定正确的 settings.url 后,将其更改为:

    (function($) {
        $(document).ajaxComplete(function(e, xhr, settings)
        {
            if (settings.url == "the path from step 1") {
                // Code to populate your fields here
            }
        });
    }(jQuery));
    

    瞧!

    您可能想阅读the page by Jay Matwichuk,这是我不久前最初学习这项技术的地方。真的要归功于他(以及 nclavaud 的评论),真的。

    【讨论】:

    • 哇,我一直在寻找类似的东西!谢谢...它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多