大家好,我有一个小脚本,将输入值列表及其名称附加到textarea中。我想要做的是在值0
或empty
时隐藏字段名称。
这是脚本:
<script>
function showValues() {
var fields = $(".content :input").serializeArray();
$("#contentlist_copy").empty();
jQuery.each(fields, function(i, field){
$("#contentlist_copy").append(field.value + " " + field.name + ", ");
});
}
$("input").change(showValues);
showValues();
</script>
我知道这是一个基本问题,我感谢你的帮助。
答案 0 :(得分:2)
$("#contentlist_copy").append(field.value + (!field.value || field.value == "0" ? "" : " " + field.name) + ", ");
<强>更新强>
如果您想要隐藏逗号
,请尝试此操作$("#contentlist_copy").append(field.value + (!field.value || field.value == "0" ? "" : " " + field.name) + (!field.value ? "" : ", "));
答案 1 :(得分:1)
我认为您应该使用.val()
方法来设置textarea的值。您还可以使用jQuery.map()
方法将字符串数组合在一起,然后将它们连接起来。如果jQuery.map()
方法的回调函数返回null或undefined,则该项不会添加到数组中。
function showValues() {
var fields = $(".content :input").serializeArray();
var tokens = jQuery.map(fields, function(field) {
return (field.value && field.value != '0') ? (field.value + ' ' + field.name) : null;
});
$("#contentlist_copy").val(tokens.join(', '));
}
更新:
上面的代码试图保留大部分原始代码,但您实际上不需要调用.serializeArray()
。在评论中,您询问使用“标题”而不是“名称”。以下代码执行此操作:
function showValues() {
var tokens = [];
$('.content :input').each(function() {
var $input = $(this);
if (($input.val() != '') && ($input.val() != '0')) {
tokens.push($input.val() + ' ' + $input.attr('title'));
}
});
$('#contentlist_copy').val(tokens.join(', '));
}
答案 2 :(得分:0)
这是一种方法:
$('input').change(function() {
var valuePairs = $('.content :input').filter(function() {
return this.value.length && this.value !== '0';
}).map(function() {
return this.value + ' ' + this.name;
}).get();
$('#contentlist_copy').val(valuePairs.join(', '));
});