【问题标题】:Triggering Ajax onchange on a select list在选择列表上触发 Ajax onchange
【发布时间】:2014-02-18 16:48:08
【问题描述】:

我正在开发一个使用可编辑字段模块的 Drupal 项目。

使用该模块,我公开了一个文本选项的下拉列表。它工作得很好。您单击列表,选择一个选项,该选项将通过 Ajax 更新。

我的挑战是我试图通过 jQuery 以编程方式更改选项。使用以下代码:

jQuery('select#edit-field-status-0-field-status-und').val(1);

...我的浏览器控制台区域对代码很满意,但是 Ajax 更新没有发生。 我试过了:

jQuery('select#edit-field-status-0-field-status-und').val(1).change();

再次没有错误,但 Ajax 事件仍然没有执行。

【问题讨论】:

    标签: ajax drupal-7 onchange selectlist


    【解决方案1】:
    $('#edit-field-status-0-field-status-und').val("1");
    

    可以解决问题,因为它不起作用的唯一原因是您将选择值作为字符串而不是数字。

    或者以下更详细:

    $('#edit-field-status-0-field-status-und option').eq(1).prop('selected', true);
    

    这也不是一个“AJAX”函数,它只是 Jquery 更新特定元素的 DOM。

    【讨论】:

    • 这正是我尝试过的。问题是如果我手动指向并单击 ajax 函数不会触发
    • 如果选择控件中存在值 1 或“1”,它应该可以工作。您可以在原始问题中粘贴#edit-field-status-0-field-status-und select html 代码吗?
    • 另外你不应该在#edit-field-status-0-field-status-und前面加上'select',直接调用id即可
    【解决方案2】:

    我在下面重新创建的代码是正确的:

    jQuery('select#edit-field-status-0-field-status-und').val(1).change();

    我发现它不起作用的原因是因为目标元素的 ID 是动态变化的。 因此,当我第一次检查并发现 edit-field-status-0-field-status-und 时,相同的元素会将 ID 更改为类似 edit-field-status-0-field- status-und--1.

    这很丢人,给人的印象是我的代码不起作用。

    感谢@gts 您的意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2011-04-30
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多