如何获取去空格输入框值?PHP复选框限选遇空格报错解决
嘿,我来帮你搞定这两个前端问题:
问题1:如何获取输入框去除空格后的内容?
这里分两种常用场景,看你需要哪种:
仅去除首尾空格:用原生的
trim()方法,原生JS和jQuery都支持:
原生JS写法:const inputVal = document.getElementById('yourInputId').value.trim();jQuery写法:
const inputVal = $('#yourInputId').val().trim();去除所有空格(包括中间的):如果需要把输入内容里的所有空格都删掉,用正则替换:
原生JS写法:const inputVal = document.getElementById('yourInputId').value.replace(/\s+/g, '');jQuery写法:
const inputVal = $('#yourInputId').val().replace(/\s+/g, '');这里的
/\s+/g是全局匹配所有空白字符(包括空格、制表符等),替换成空字符串就搞定了。
问题2:含空格的复选框值导致选择器语法错误
咱们先说说问题出在哪:当你的复选框值里有空格(比如"Jhon Doe"),你写的input[value=Jhon Doe]会被jQuery的选择器引擎错误解析——它会以为你要找value等于Jhon且包含Doe的元素,这就触发了语法错误。
解决思路有两个,推荐第二个更简洁的方案:
方案1:给属性值加引号
把选择器里的属性值用双引号或者单引号包裹起来,这样引擎就会把整个字符串当成一个值:
var limit = 1; var chkArrayCheckBoxOne = []; $('input.catV').on('change', function(evt) { chkArrayCheckBoxOne.push($(this).val()); if($(this).siblings(':checked').length >= limit) { var TagO = chkArrayCheckBoxOne[0]; console.log(TagO); // 给value值加上双引号包裹 $('input[value="'+TagO+'"]').prop('checked', false); chkArrayCheckBoxOne[0] = $(this).val(); } });
方案2:优化逻辑,彻底避开选择器问题
其实你的需求是最多勾选1个复选框,本质上就是单选框的行为,咱们可以不用数组记录之前的选中项,直接在当前复选框选中时,取消其他同类型复选框的选中状态,这样不管值有没有空格都不会出问题:
var limit = 1; $('input.catV').on('change', function() { // 如果当前复选框被选中,就取消其他所有.catV复选框的选中状态 if ($(this).is(':checked')) { $('input.catV').not(this).prop('checked', false); } });
这个逻辑更清晰,代码更简洁,还避免了原代码中多次点击同一个复选框导致数组冗余的问题。
内容的提问来源于stack exchange,提问作者aurelien pirra
相关产品推荐
相关产品推荐

