jquery在除了last之外的每个变量之间添加逗号

时间:2017-03-28 14:07:56

标签: javascript jquery

我有一个脚本,可以在输入标记的value()中插入选中的checbox和无线电。

var burgernavn = meat + " with " + bread + " and " + onion + tomato + cheese + salad;
  $('#burger-navn').val(burgernavn);

Onion, tomato, cheese and salad需要1" "他们之间,除了最后两个需要"和"它们之间。 这是第一件事。 第二件事是这些变量代表复选框,因此它们可以是未定义的,在这种情况下它们不应放入$('#burger-navn').val()。它们都可以是未定义的,在这种情况下没有逗号或"和"应该放进去。 我希望这是可以实现的。

2 个答案:

答案 0 :(得分:2)

  1. 捕获数组中的所有已检查值(这可确保此数组中的所有值都已定义)。此外,它将为您提供需要传递到输入框的值的计数。
  2. 
    
    var checkedValues = document.getElementsByClassName('checkbox');
    
    
    

    1. 迭代此数组,检查最后的值。 (查看下面代码段中的评论)
    2. 
      
      var commaValues = "", otherValues= "";
      //we are iterating only until (total values -2)
      for(var i = 0; i < checkedValues.length - 2 ; i++){
        
        //append comma with each value
        commaValues += checkedValues[i].concat(",");
      }
      
      //append 'And' for last two values if total valuesa re more than one
      if(checkedValues.length > 1){
        otherValues = checkedValues[checkedValues.length-1].concat("and", checkedValues[checkedValues.length])
      }
      else if(checkedValues.length == 1){
        otherValues = checkedValues[0];
      }
      
      //finally concat both strings and put this concated string in input
       $('#burger-navn').val(otherValues.concat(commaValues));
      &#13;
      &#13;
      &#13;

      所以,我希望你有这个主意。此代码段可能需要稍微调整,因为我没有您的HTML代码和示例数据,但使用此代码段作为参考很容易实现。干杯

答案 1 :(得分:1)

使用jQuery $.map.

,您可以轻松完成此操作
var checkboxes = $('input:checkbox');
var commaString = $.map($('input:checkbox'), function( ele, i ) {
    return $(ele).val() + (i + 2 == checkboxes.length ? " and" : (i + 1 != checkboxes.length) ? ",": "");
}).join(" ");