从输入值字符串中查找和删除文本

时间:2014-04-30 09:32:23

标签: javascript jquery

我们的表单有一个隐藏的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);
}

5 个答案:

答案 0 :(得分:1)

您可以使用string.indexOf(searchValue);string.replace(oldValue, 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);

答案 1 :(得分:0)

您只需删除数组中的最后一个元素,然后将其与&#39;,&#39;一起使用即可。性格:

splitReq.pop();
$('input[name="required"]').val(splitReq.join(','));

答案 2 :(得分:0)

尝试:

var splitReq = nowReq.split(',website').join("");

答案 3 :(得分:0)

我建议您避免解析值字符串,只需重新计算相关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 Fiddle demo

参考文献:

答案 4 :(得分:0)

以下情况适用于大多数情况:

var s = "name,address,telephone,email";
s = s.replace(",address", "").replace("address,", "").replace("address", "");