【问题标题】:JQuery convert string to linkJQuery 将字符串转换为链接
【发布时间】:2015-12-03 08:47:50
【问题描述】:

我有 3 个选择字段,我想将这些字段的组合值用作 url 的额外部分。

这是 HTML 代码:

<select name="cos" id="cos" size="5">
  <option value="/squad">Squad</option>
  <option value="/class">Class</option>
 </select>
<select name="color" id="color" size="5">
  <option value="/purpleblack">PurpleBlack</option>
  <option value="/redblack">RedBlack</option>
  <option value="/aquablack">AquaBlack</option>
</select>
<select name="year" id="year" size="5">
  <option value="/1984">1984</option>
  <option value="/1985">1985</option>
  <option value="/1986">1986</option>
</select>
<br/><br/>
<div id="output"></div>

还有 JavaScript:

$("select").change(function () { 
   var str = "";
    $("select option:selected").each(function () {
    var id = $(this).parent().attr('name');
       str += $(this).attr('value');             
       });
      $("div#output").text(str);
    })
    .trigger('change'); 

https://jsfiddle.net/eZKUU/264/

现在它正在工作.. 在我在所有 3 个 selectfields 中选择一个选项后,我会得到类似 /squad/redblack/1985 的输出。 我想在 url 中使用这个输出,所以它看起来像:

mysite.com/squad/redblack/1985

有没有简单的方法来做到这一点?还有.. 只有在所有三个selectfields 都选择了一个选项后才能看到链接?

【问题讨论】:

    标签: javascript jquery string href


    【解决方案1】:

    要仅在选择所有三个选项后获取链接,只需使用if 语句仅在选择了三个选项时生成并显示链接。要使其成为 URL,只需将获得的路径附加到基本 URL。比如:

    $("select").change(function () { 
      var str = "";
      if(#("select option:selected").length === 3){
        $("select option:selected").each(function () {
          var id = $(this).parent().attr('name');
          str += $(this).attr('value');             
        });
        $("div#output").text("mysite.com" + str);
        // Or, if you want a clickable link and not just a URL:
        // $("div#output").append($("<a>").attr({href: "mysite.com" + str}).append("Click me"));
      }
    })
    .trigger('change');
    

    【讨论】:

      【解决方案2】:

      您可以使用以下内容。添加一个a 元素并将其隐藏直到完成。使用选定的选项更新 a 元素 href 属性:

      $("select").change(function() {
          var str = "";
          $("select option:selected").each(function() {
            var id = $(this).parent().attr('name');
            str += $(this).attr('value');
            //update href with selected values
            $("#mySite").attr("href", "mysite.com/" + str);
          });
          //keep anchor element hidden until all three options is selected
          $("#mySite").toggle($("#cos").find("option:selected").length > 0 && $("#color").find("option:selected").length > 0 && $("#year").find("option:selected").length > 0);
          $("div#output").text(str);
        })
        .trigger('change');
      #mySite {
        display: none;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <select name="cos" id="cos" size="5">
        <option value="/squad">Squad</option>
        <option value="/class">Class</option>
      </select>
      <select name="color" id="color" size="5">
        <option value="/purpleblack">PurpleBlack</option>
        <option value="/redblack">RedBlack</option>
        <option value="/aquablack">AquaBlack</option>
      </select>
      <select name="year" id="year" size="5">
        <option value="/1984">1984</option>
        <option value="/1985">1985</option>
        <option value="/1986">1986</option>
      </select>
      <br/>
      <br/>
      <div id="output"></div>
      <a id="mySite" href="#">Redirect Link</a>

      【讨论】:

        【解决方案3】:

        您可以检查所选选项的数量是否与select 元素的数量相同。

        var selectedAllLength = $("select").length;
        $("select").change(function () {
           var str = location.origin;
            var selected = $("select option:selected");
            var selectedCount = selected.length;
            if(selectedCount == selectedAllLength) {
                selected.each(
                    function () {
                        str += $(this).attr('value');             
                    }
                );
                $("#output").html('<a href=' + str + '>The link is here</a>');
            }
        })
        .trigger('change');
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <select name="cos" id="cos" size="5">
          <option value="/squad">Squad</option>
          <option value="/class">Class</option>
         </select>
        <select name="color" id="color" size="5">
          <option value="/purpleblack">PurpleBlack</option>
          <option value="/redblack">RedBlack</option>
          <option value="/aquablack">AquaBlack</option>
        </select>
        <select name="year" id="year" size="5">
          <option value="/1984">1984</option>
          <option value="/1985">1985</option>
          <option value="/1986">1986</option>
        </select>
        <br/><br/>
        <div id="output"></div>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-13
          • 1970-01-01
          • 1970-01-01
          • 2020-12-27
          相关资源
          最近更新 更多