JQuery将字符串转换为链接

JQuery convert string to link

本文关键字:链接 转换 字符串 JQuery      更新时间:2023-09-26

我有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都选择了一个选项后才能看到链接?

您可以使用以下命令。添加一个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>

您可以检查所选选项的数量是否与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>

要在三个选项都被选中之后才获得链接,只需使用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');