Drupal视图暴露表单空搜索显全部结果,必填设置无效求助
Drupal视图暴露表单必填验证失效解决方法
检查暴露表单区块的验证触发逻辑
当暴露表单置于区块中时,默认的「Input required」样式可能无法自动触发前端验证。进入视图的「暴露表单设置」,确认提交按钮的行为设置,确保表单提交时会优先触发验证逻辑,而非直接跳转返回结果。修正筛选器的必填配置细节
即使勾选了「input required」,若筛选器设置了默认值,空提交时会自动使用默认值返回全部结果,跳过必填验证。进入筛选器编辑页面,清空「默认值」字段,同时确认筛选器的暴露方式为对应输入类型(如文本框),无特殊默认值覆盖。添加自定义前端验证(补全前端提示)
若前端无必填提示,可通过主题或自定义模块的JS代码添加校验,示例代码如下:(function ($, Drupal) { Drupal.behaviors.requireExposedSearch = { attach: function (context, settings) { $('.views-exposed-form').submit(function(e) { var searchInput = $(this).find('input[name="YOUR_SEARCH_FIELD_MACHINE_NAME"]'); if (searchInput.val().trim() === '') { e.preventDefault(); searchInput.addClass('error'); searchInput.siblings('.error-message').remove(); searchInput.after('<div class="error-message">请输入搜索内容</div>'); } else { searchInput.removeClass('error'); searchInput.siblings('.error-message').remove(); } }); } }; })(jQuery, Drupal);将
YOUR_SEARCH_FIELD_MACHINE_NAME替换为实际搜索字段的机器名,这段代码会在表单提交时检查输入是否为空,为空则阻止提交并显示提示。调整视图无筛选结果时的行为
若视图页面设置了「无筛选条件时显示所有结果」,会覆盖必填验证的效果。进入视图的「页面设置」,将「无筛选结果时的行为」改为「显示空文本」或「显示错误消息」。清除Drupal缓存
所有配置修改完成后,务必清除配置缓存与页面缓存,确保新设置生效。
内容的提问来源于stack exchange,提问作者KET BRO
相关产品推荐
相关产品推荐

