0

大家好,我有一个小脚本,将输入值列表及其名称附加到文本区域中。我想做的是在值为0or时隐藏字段名称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>

我知道这是一个基本问题,感谢您的帮助。

4

3 回答 3

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 ? "" : ", "));
于 2013-04-05T14:27:33.747 回答
1

我认为您应该使用该.val()方法来设置文本区域的值。您还可以使用该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(', '));
}
于 2013-04-05T14:40:52.523 回答
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(', '));
});
于 2013-04-05T14:31:25.297 回答