You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery进行输入校验时无法找到rich:autocomplete组件ID的问题

无法匹配rich:autocomplete组件的核心原因
  • RichFaces渲染rich:autocomplete组件时,你在JSP/JSF页面上给组件声明的带_REQ后缀的ID,不会直接绑定到实际可输入的<input>标签上,而是绑定在组件生成的外层包裹容器(通常是<span>或<div>标签)上。内部真实的输入框ID会自动追加额外的框架生成后缀(比如Input、Decoration等,不同RichFaces版本后缀规则有差异),因此input[id$="_REQ"]的选择规则无法命中对应的输入元素。
  • 部分版本的rich:autocomplete会同时生成隐藏存储域和可见输入框,你配置的必填标记可能绑定在隐藏域而非可见输入框上,也会导致匹配失败。
修复方案

调整选择器逻辑,先匹配所有带_REQ后缀的元素,再根据元素类型筛选出需要处理的输入框,参考代码如下:

$('div[id*="'+sectionId+'"]').find('[id$="_REQ"]').each(function(){
    let $curr = $(this);
    // 识别autocomplete外层容器,取内部实际输入框
    if($curr.hasClass('rf-au')) { 
        // rf-au是RichFaces autocomplete组件的默认样式类,可根据实际使用的版本调整类名
        $curr = $curr.find('input[type="text"]').first();
    }
    // 跳过非输入元素
    if(!$curr.is('input')) return;

    console.log("found:" + $curr.attr('id') + " ,value:" + $.trim($curr.val()))
    // 后续校验逻辑
});

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:36:04