spr*_*man 9 jquery drupal drupal-views drupal-6
我有一个带有一个暴露过滤器的视图(一个选择).当用户单击"应用"时,它使用ajax重新填充.我希望他们不必点击它,只需在更改选择时重新填充.我假设我需要一些或多或少像这样的JS(尽管这似乎不太合适):
$('#edit-tid').change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
Run Code Online (Sandbox Code Playgroud)
首先,我认为会这样做,但它没有被提交.谁知道为什么?
第二,注入该代码的最佳方法是什么?我正在考虑使用View页脚,因为它很简单,但还有其他更好的想法吗?
UPDATE:上述代码是工作(通过视图页脚注射),但仅在第一次.我猜选择被ajax调用覆盖了,但是行为没有被重新连接(或其他东西).嗯...
更新#2:为简单起见,我要放弃ajax.
jhe*_*rom 10
为了在ajax调用之后重新附加此代码,它最初应该通过Drupal.behaviors附加.像这样的东西:
Drupal.behaviors.myCustomModule = function(context) {
$('#edit-tid', context).change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,context参数将传递给选择器.应该通过ajax加载的新内容再次调用Drupal.behaviors.
更新:我没有注意到你是通过视图页脚插入js.上面应该仍然有效,只需用一些唯一标识符替换'myCustomModule',这样就不会覆盖其他行为.
我认为这个功能开箱即用(至少在Drupal 7中).编辑您的视图,然后在" 公开表单"下选择
Exposed form style -> Settings
Run Code Online (Sandbox Code Playgroud)
然后有一个选项
Autosubmit
Run Code Online (Sandbox Code Playgroud)
在哪里可以选择是否"在元素更改后自动提交表单".也有可能使用该选项
Hide submit button
Run Code Online (Sandbox Code Playgroud)
这是通过"启用javascript时隐藏提交按钮"解释的.