drupal&gt;意见&gt; <曝光过滤器>提交变更

时间:2009-09-28 19:01:37

标签: jquery drupal drupal-6 drupal-views

我有一个带有一个暴露过滤器的视图(一个选择)。当用户单击“应用”时,它使用ajax重新填充。我希望他们不必点击它,只需在更改选择时重新填充。我假设我需要一些或多或少像这样的JS(虽然这似乎不太合适):<​​/ p>

$('#edit-tid').change(function(){
  $('#views-exposed-form-MYVIEW-page-1').submit();
});

首先,我认为会这样做,但它没有被提交。谁知道为什么?

其次,注入该代码的最佳方法是什么?我正在考虑使用View页脚,因为它很简单,但还有其他更好的想法吗?

更新:上面的代码正在工作(通过视图页脚注入),但只是第一次。我猜选择被ajax调用覆盖了,但是行为没有被重新连接(或其他东西)。嗯...

更新#2:为了简单起见,我要放弃ajax。

5 个答案:

答案 0 :(得分:10)

为了在ajax调用之后重新附加此代码,它最初应该通过Drupal.behaviors附加。像这样:

Drupal.behaviors.myCustomModule = function(context) {
  $('#edit-tid', context).change(function(){
    $('#views-exposed-form-MYVIEW-page-1').submit();
  });
}

请注意,context参数将传递给选择器。应该通过ajax加载的新内容再次调用Drupal.behaviors。

更新:我没有注意到您是通过视图页脚插入js的。上面应该仍然有用,只需用一些唯一标识符替换'myCustomModule',这样就不会覆盖其他行为。

答案 1 :(得分:5)

我认为这个功能开箱即用(至少在Drupal 7中)。编辑您的视图 外露表单选择

Exposed form style -> Settings

然后有一个选项

Autosubmit

您可以选择是否“在更改元素后自动提交表单”。也可以使用选项

Hide submit button

由“启用javascript时隐藏提交按钮”解释。

答案 2 :(得分:1)

@pradeep:您可以将其插入视图的主题视图模板(请参阅http://www.group42.ca/theming_views_2_the_basics)。 (对不起,根据论坛ui不能写这个评论)

答案 3 :(得分:0)

如果在更改曝光视图中的选择选项时需要AJAX工作

Drupal.behaviors.myCustomModule = {
attach: function (context, settings) {
    $('select[data-drupal-selector="edit-YOUR-FIELD"]', context).change(function(){
        $('#views-exposed-form-YOUR-VIEW-block-1 input.form-submit').trigger('click');
    });
}

};

答案 4 :(得分:0)

自动提交更好的暴露过滤条件不适用于初始页面加载,但在您更改或单击选项时可以使用。