我正在尝试让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调用?任何帮助将不胜感激......
答案 0 :(得分:1)
我不确定Drupal 7中是否有更好的方法,但是在Drupal 6中,您可以使用jQuery(document).ajaxComplete
和settings.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在那里的评论),真的。