javascript - 动态添加 URL 到选择框

标签 javascript jquery html css

我有以下选择菜单:JSFIDDLE .到目前为止,一切都按预期工作。我唯一的问题是如何在现有的 URL 之上构建 URL。例如,当您选择“自行车”选项并单击“立即访问”时,它会将您重定向到 www.yahoo.com。我想要做的是选择第二个选择框中的选项以添加现有 url 的额外位。例如自行车:www.yahoo.com >> Bikes-->Bike2 = www.yahoo.com/bike2。我

PS:我想避免的是手动添加整个 URL。我想将位“/bike2”添加到现有的 URL 中。有人可以帮忙吗?

$(document).ready(function() {
  $('#basic_plan').change(function() {
    $('.second-select').hide();
    var an = $(this).val();
    switch (an) {
      case "ann":
        $('.button-plans a').attr('href', "www.google.com");
        $('#jeeps').show();
        break;
      case "bi":
        $('.button-plans a').attr('href', "www.yahoo.com");
        $('#bikes').show();
        break;
      case "tri":
        $('.button-plans a').attr('href', "www.bing.com");
        $('#cars').show();
        break;
        /* and so on */
    }
  });

  $('.second-select').change(function() {
    var an = $(this).val();
    switch (an) {
      case "1":
        $('.button-plans a').attr('href', "www.example.com");
        break;
      case "2":
        $('.button-plans a').attr('href', "www.bitbucket.org");
        break;
      case "3":
        $('.button-plans a').attr('href', "www.facebook.com");
        break;
    }
  });
});
.second-select {
  margin-top: 5px;
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="dropdown-plans">
  <select id="basic_plan" name="bill_cycle">
    <option value="tri">Cars</option>
    <option value="bi">Bikes</option>
    <option value="ann">Jeeps</option>
  </select>
  <br />
  <select id="cars" class="second-select">
    <option value="1">Car1</option>
    <option value="2">Car2</option>
    <option value="3">Car3</option>
  </select>
  <select id="bikes" class="second-select">
    <option value="1">Bike1</option>
    <option value="2">Bike2</option>
    <option value="3">Bike3</option>
  </select>
  <select id="jeeps" class="second-select">
    <option value="1">Jeep1</option>
    <option value="2">Jeep2</option>
    <option value="3">Jeep3</option>
  </select>
</div>
<div class="button-plans">
  <a id="abc" href="#"> Visit now </a>
</div>

最佳答案

这是一个 working Fiddle

并更改您的第二个下拉更改功能

 $('.second-select').change(function() {
    var an = $(this).val();
    var text = $(this).find('option:selected').text();
    var anchorTag = $('#abc');
    switch (an) {
      case "1":
        anchorTag.attr('href', anchorTag.attr('href')+'/' + text);
        break;
      case "2":
        anchorTag.attr('href', anchorTag.attr('href')+'/' +text);
        break;
      case "3":
        anchorTag.attr('href',  anchorTag.attr('href')+'/' +text);
        break;
    }
  });

但是如果您多次更改下拉选择,此代码最终 URL 将是一团糟,因为我们不会清除现有的,也不会对其进行操作以使其正确。这种方法会很困惑并且容易出错。


我建议在点击访问时计算 URL,然后重定向到该链接。这是一个 Working Fiddle

您的完整脚本将如下所示。

$(document).ready(function() {
  $('#basic_plan').change(function() {
    $('.second-select').hide();
    var an = $(this).val();
    switch (an) {
      case "ann":       
        $('#jeeps').show();
        break;
      case "bi":       
        $('#bikes').show();
        break;
      case "tri":       
        $('#cars').show();
        break;
        /* and so on */
    }
  });

  $('#abc').on('click',function(e){
   e.preventDefault();
   var anchorUrl = GetMainLink();
   window.open(anchorUrl, '_blank'); //open the link
  });


  function GetMainLink(){
    var mainSelection = $('#basic_plan').val();
    switch (mainSelection) {
      case "ann": return "www.google.com" + '/' + $('#jeeps').find('option:selected').text();        
        break;
      case "bi":return "www.yahoo.com"+ '/' + $('#bikes').find('option:selected').text();       
        break;
      case "tri":return "www.bing.com"+ '/' + $('#cars').find('option:selected').text();      
        break;
        /* and so on */
    }
  }

});

这里的优点是即使下拉菜单没有改变,URL 也能正确打开。

尝试不更改第一个下拉菜单,也尝试不更改第二个下拉菜单。

关于javascript - 动态添加 URL 到选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327565/

相关文章:

javascript - 如何在div中添加对象

jquery - 将输入值增加 10 返回 NaN

javascript - Jquery:如何编辑完整日历中的事件?

html - 尝试为 Tumblr 制作一个粘性标题

javascript - 如何将可拖动父 div 的子/子 div 更改为不同的类?

javascript - 如何根据当前颜色生成相反的颜色?

javascript - 如何调整 substr javascript 中的日期构造函数

javascript - 在悬停/鼠标悬停时更改 div 内文本和 svg 的颜色

html - 如何在不更改字体大小的情况下更改字形高度?

javascript - Javascript 减少值和退出循环的问题