如何用jQuery检测输入框中是否存在指定文本并追加内容
完善jQuery检测输入框文本并追加内容的功能
我来帮你搞定这个需求~你的代码思路是对的,但有几个小细节需要调整,下面是修正后的完整实现:
问题分析
你当前代码里的$('#invoice_number:contains("CRN")')写法不太对::contains选择器是用来匹配元素内部的文本内容,但输入框的内容是存在于value属性里的,应该直接获取输入框的val()值来判断。另外,jQuery对象即使找不到匹配元素也会返回空对象,if(data)的判断永远为true,得换正确的判断方式。
修正后的完整代码
$(document).ready(function(){ $("#item_inv_desc").change(function(){ var item_inv_desc = $('select[name=item_inv_desc]').val(); if (item_inv_desc == 7) { var $invoiceInput = $('#invoice_number'); // 缓存输入框对象,提升性能 var inputValue = $invoiceInput.val(); // 检测输入框值中是否包含"CRN" if (!inputValue.includes("CRN")) { // 如果不包含,追加新数据(这里替换成你要追加的内容) var newData = " CRN-XXXXXX"; // 示例追加内容 $invoiceInput.val(inputValue + newData); } else { // 若文本"CRN"存在则执行的逻辑 console.log("输入框中已存在CRN文本"); } } }); });
关键改进点
- 缓存DOM对象:把
$('#invoice_number')存到变量$invoiceInput里,避免重复查询DOM,提升性能 - 正确判断文本存在性:用字符串的
includes()方法直接判断输入框值是否包含"CRN",如果需要兼容IE等旧浏览器,可以换成inputValue.indexOf("CRN") !== -1 - 明确的条件分支:
!inputValue.includes("CRN")直接表示“不包含CRN”的情况,逻辑更清晰 - 追加内容的方式:通过
val()方法把原内容和新内容拼接后重新赋值,实现追加效果
内容的提问来源于stack exchange,提问作者user8758118
相关产品推荐
相关产品推荐

