有条件地附加值

时间:2017-07-23 09:39:58

标签: jquery append indexof

在我的应用程序中,我有一个包含Text Inputs的表单。这些输入的值始终是一个链接。

我的部分Links Inputs已包含?utm....

当用户添加链接时,我有一个input字段,可以在其中插入utm并点击将UTM设置为链接按钮,它会追加/添加他们的所有utm

Link Inputs

我想要实现的是点击将UTM设置为链接不包含?utm....的链接,添加/添加{{ 1}}他们的价值。

我已尝试使用下面的代码段。我现在拥有的,将utm附加到所有链接:

utm
  $(".set_utm_value_input").click(function () {
    var utmValues = $('#set-input-utm').val();
    $("input[class='links']").each(function() {
      $(this).val(function() {
        return this.value + utmValues;
      });
    });
  });
input{width:100%;}

我也尝试过下面的代码片段。这几乎可以胜任,但唯一不对的是,如果<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input class="form-control" id="set-input-utm" type="text" value="?utm_"> <button class="set_utm_value_input" style="margin-top: 25px;margin-left: -32px;">Set UTM to Links</button> <input type="text" class="links" value="http://www.link.com/path/?utm_source=facebook&amp;utm_medium=partner"> <input type="text" class="links" value="http://www.link2.com/path/?utm_source=facebook&amp;utm_medium=partner"> <input type="text" class="links" value="http://www.link3.com/path/?utm_source=facebook&amp;utm_medium=partner">不包含任何value,它会清除/清空整个输入/值。

utm
$(".set_utm_value_input").click(function () {
  var utmValues = $('#set-input-utm').val();
  $("input[class='links']").each(function() {
    $(this).val(function() {
      var inputValue = this.value;
      if (inputValue.indexOf('?utm') == -1){
        return this.value + utmValues;
      }
    });
  });
});
input{width:100%;}

1 个答案:

答案 0 :(得分:0)

missed添加else part else { return this.value; }

注意: ?utm不存在意味着它会进入if语句,如果已returning return this.value + utmValues; ?utm存在not returning任何与其成为empty

的原因
      if (inputValue.indexOf('?utm') == -1){
        return this.value + utmValues;
      }else{
         return this.value;
         ^^^^^^^^^^^^^^^^^^
      }

&#13;
&#13;
$(".set_utm_value_input").click(function () {
  var utmValues = $('#set-input-utm').val();
  $("input[class='links']").each(function() {
    $(this).val(function() {
      var inputValue = this.value;
      if (inputValue.indexOf('?utm') == -1){
        return this.value + utmValues;
      }else{
         return this.value;
      }
    });
  });
});
&#13;
input{width:100%;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

<input class="form-control" id="set-input-utm" type="text" value="?utm_">
    <button class="set_utm_value_input" style="margin-top: 25px;margin-left: -32px;">Set UTM to Links</button>

    <input type="text" class="links" value="http://www.link.com/path/">
    <input type="text" class="links" value="http://www.link2.com/path/?utm_source=facebook&amp;utm_medium=partner">
    <input type="text" class="links" value="http://www.link3.com/path/?utm_source=facebook&amp;utm_medium=partner">
&#13;
&#13;
&#13;