替换输入值.val()为jQuery
替换输入值.val()为jQuery
基本上这是我的jsFiddle - http://jsfiddle.net/CmNFu/。
代码也在这里 -
HTML -
类别1
类别2
jQuery -
jQuery(document).ready(function() {
jQuery(".portfolio-category").click(function() {
if(jQuery(this).is(":checked")) {
jQuery("#portfolio-categories").val(jQuery("#portfolio-categories").val()+" "+jQuery(this).val());
}
else {
var portfolioCategories = jQuery("#portfolio-categories").val();
alert("before + "+portfolioCategories);
var currentElement = jQuery(this).val()+" ";
alert(currentElement);
portfolioCategories = portfolioCategories.replace(currentElement, "");
alert(portfolioCategories);
}
});
});
我想实现的基本上是,当用户勾选复选框时,值会自动添加到输入框中(完成,它正在工作,太棒了!),但问题是当用户取消勾选复选框时,值应该从输入框中删除(问题从这里开始),它没有删除任何内容。您可以在jsFiddle上查看我的示例以实时查看。有什么建议吗?我猜replace()对于val()不起作用,对吗?那么,还有其他建议吗?
问题的原因是在代码中使用了错误的方法来替换输入值。解决方法是使用jQuery的.val()方法来替换输入值,并使用$.trim()方法来去除字符串中的前导和尾随空格。下面是一个可以解决问题的示例代码:
// 获取输入框的值 var inputValue = $("input").val(); // 替换输入框的值为字符串"portfolioCategories" $("input").val("portfolioCategories"); // 使用$.trim()去除字符串中的前导和尾随空格 var trimmedValue = $.trim(inputValue);
你可以在下面的链接中查看一个可行的解决方案:
[http://jsfiddle.net/CmNFu/11/](http://jsfiddle.net/CmNFu/11/)
希望这对你有所帮助。
问题的原因是在于输入框中有空格。首先,如果不考虑空格问题,以下代码将会生效:
jQuery("#portfolio-categories").val(portfolioCategories);
然而,由于最后一个元素之后没有空格,所以这种方法并不总是有效。如果将第四行代码修改为以下形式:
jQuery("#portfolio-categories").val(jQuery("#portfolio-categories").val()+jQuery(this).val()+" ");
那么它将能够正常工作,因为它会在每个元素之后添加空格,而不是之前。
问题在于你改变了变量 `portfolioCategories` 的值,但是你没有更新输入框本身的值(请注意,改变字符串的值并不会改变它最初来自的输入框的值)。