如何用输入框内容替换表单内所有指定字符串(含选择框、标签)
解决方案:替换表单中所有"your dog"文本
下面是修改后的jQuery代码,可覆盖输入框占位符、选择框选项文本和标签文本的替换需求:
$('#input_2_10').on('blur', function() { var myStr = $(this).val().trim(); var targetRegex = /your dog/gi; // 全局匹配且不区分大小写 // 1. 处理所有输入框的占位符 $('form').find('input').each(function() { var placeholder = $(this).attr('placeholder'); if (placeholder) { var newPlaceholder = placeholder.replace(targetRegex, myStr); $(this).attr('placeholder', newPlaceholder); } }); // 2. 处理选择框的选项文本 $('form').find('select option').each(function() { var optionText = $(this).text(); var newText = optionText.replace(targetRegex, myStr); $(this).text(newText); }); // 3. 处理标签文本(如legend.gfield_label) $('form').find('.gfield_label').each(function() { var labelText = $(this).text(); var newLabelText = labelText.replace(targetRegex, myStr); $(this).text(newLabelText); }); });
关键修改说明:
- 正则
/your dog/gi:g实现全局替换,i忽略大小写,能匹配"Your Dog"、"your dog"等各种大小写组合 - 新增选择框处理逻辑:遍历所有
option元素,替换其显示文本 - 新增标签处理逻辑:选中
.gfield_label类的元素,替换其文本内容 - 输入值加
trim():避免输入前后空格影响替换结果
可选扩展:输入为空时恢复原始文本
如果需要在输入框为空时恢复各元素的原始内容,可以预先存储初始值:
// 页面加载时保存原始内容 var originalData = { placeholders: {}, options: {}, labels: {} }; $(document).ready(function() { // 保存输入框原始占位符 $('form input').each(function() { originalData.placeholders[$(this).attr('id')] = $(this).attr('placeholder'); }); // 保存选项原始文本 $('form select option').each(function() { var key = $(this).parent().attr('class') + '-' + $(this).val(); originalData.options[key] = $(this).text(); }); // 保存标签原始文本 $('form .gfield_label').each(function() { originalData.labels[$(this).attr('class')] = $(this).text(); }); }); // 修改blur事件逻辑 $('#input_2_10').on('blur', function() { var myStr = $(this).val().trim(); var targetRegex = /your dog/gi; // 恢复或替换输入框占位符 $('form input').each(function() { var placeholder = myStr ? $(this).attr('placeholder').replace(targetRegex, myStr) : originalData.placeholders[$(this).attr('id')]; $(this).attr('placeholder', placeholder); }); // 恢复或替换选项文本 $('form select option').each(function() { var key = $(this).parent().attr('class') + '-' + $(this).val(); var text = myStr ? $(this).text().replace(targetRegex, myStr) : originalData.options[key]; $(this).text(text); }); // 恢复或替换标签文本 $('form .gfield_label').each(function() { var text = myStr ? $(this).text().replace(targetRegex, myStr) : originalData.labels[$(this).attr('class')]; $(this).text(text); }); });
内容的提问来源于stack exchange,提问作者Junky
相关产品推荐
相关产品推荐

