[英]Find and remove text from input value string
我们的表单有一个隐藏的input
,其中包含我们发送到服务器以进行服务器端验证的所有必需值。 它由逗号分隔的字符串组成:
即<input type="hidden" value="name,address,telephone,email">
现在,在单选按钮检查中出现了新的输入(即网站),我可以成功地将它们添加到value=""
字符串中:
var nowReq = $('input[name="required"]').val();
if ($('#website').is(':checked')) {
$('input[name="required"]').val(nowReq + ',website');
}
但是,当不同的无线电被选中,我不能得到它删除,website
从字符串。
我相信我需要抓住字符串,用逗号将其分割,找到并删除website
,然后重新加入字符串,但是我不确定如何实现这一点(或者这是否是最好的方法):
if ($('#fax').is(':checked')) {
var splitReq = nowReq.split(',');
// Something goes here?
$('input[name="required"]').val(nowReq2);
}
您可以使用string.indexOf(searchValue);
和string.replace(oldValue, newValue);
搜索和删除未选择的元素,或者最好在string.replace(regex, newValue)
的第一个参数中传递正 string.replace(regex, newValue)
:
非正则表达式示例:
var nowReq = $('input[name="required"]').val();
if ($('#website').is(':checked')) {
nowReq = nowReq + ',website';
}
else {
if(string.indexOf(',website') > -1) // If website is the last element
nowReq = nowReq.replace(',website', '');
else if(string.indexOf('website,') > -1) // If website is not the last element
nowReq = nowReq.replace('website,', '');
}
$('input[name="required"]').val(nowReq);
您只需要删除数组中的最后一个元素,然后将其与','字符连接:
splitReq.pop();
$('input[name="required"]').val(splitReq.join(','));
尝试:
var splitReq = nowReq.split(',website').join("");
我建议您避免解析值字符串,而只需在相关input
元素的更改时重新计算值; 以下是一个演示示例,因为问题中缺少信息(如果我们可以看到您的HTML和当前的jQuery,而不是对其的描述,则可以提供一个更具体的示例):
$('input[type="checkbox"]').on('change', function(){
var requiredString = $('input[type="checkbox"]').map(function(){
if (this.checked) {
return this.value;
}
}).get().join(',');
$('input[name="required"]').val(requiredString);
}).change();
JS小提琴演示 。
参考文献:
在大多数情况下,以下方法将起作用:
var s = "name,address,telephone,email";
s = s.replace(",address", "").replace("address,", "").replace("address", "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.