Redmine文本框含特定值的JS验证失效问题求助
解决Redmine文本框包含特定内容的验证问题
问题分析
你的代码当前使用严格相等判断field.val() == 'urgent',只有当输入内容完全等于'urgent'时才会触发验证逻辑,自然无法匹配包含该关键词的其他内容。
修改后的代码
$(function() { const setup = function(fieldSelector) { const field = $(fieldSelector); const applyStyle = function() { // 转小写后检查是否包含'urgent',忽略大小写差异 const containsUrgent = field.val().toLowerCase().includes('urgent'); if (containsUrgent) { alert("Text not allowed!"); field.css({'background-color': 'red'}); } else { field.css({'background-color': ''}); } }; // 同时监听change和keyup事件,实现实时验证 field.on('change keyup', applyStyle); applyStyle(); } // 注意:根据目标自定义字段修改ID setup('#issue_custom_field_values_17'); });
关键改动说明
- 包含判断替换严格相等:用
toLowerCase().includes('urgent')替代原有的== 'urgent',既实现了包含匹配,又忽略了大小写(比如输入'Urgent'、'URGENT'也会触发验证)。如果不需要忽略大小写,直接用field.val().includes('urgent')即可。 - 添加实时验证事件:新增
keyup事件监听,用户输入过程中就能实时触发验证,而不是仅在输入框失去焦点时才生效,提升交互体验。
内容的提问来源于stack exchange,提问作者Mohamed El Habchi
相关产品推荐
相关产品推荐

