2015-11-12 4 views
2

У меня есть кнопка со ссылкой, которая должна быть изменена в зависимости от того, что пользователь выбирает из двух выпадающих меню.Изменить ссылку на кнопку с вводом из двух выпадающих списков?

Я нашел гениальное решение с меню один ниспадающего здесь:

var sel = document.getElementById('basic_plan'); 
 
sel.onchange = function() { 
 
    document.getElementById("abc").href = this.value + ".html"; 
 
}
<div class="dropdown-plans"> 
 
    <select id="basic_plan" name="bill_cycle"> 
 
     <option value="tri">3 Years - Rs. 100/month</option> 
 
     <option value="bi">2 Years - Rs. 200/month</option> 
 
     <option value="ann">1 Year - Rs. 100/month</option> 
 
    </select> 
 
</div> 
 
<div class="button-plans"> 
 
<a id="abc" href="something"> Order now </a> 
 
</div>

http://jsfiddle.net/MHh46/1/

Однако мне нужно решение, в котором выходное звено основывается на двух выпадающих меню. Например:

<div class="dropdown-plans"> 
 
    <select id="basic_plan" name="bill_cycle"> 
 
     <option value="1">1</option> 
 
     <option value="2">2</option> 
 
     <option value="3">3</option> 
 
    </select> 
 
</div> 
 
<div class="dropdown-plans2"> 
 
    <select id="basic_plan2" name="bill_cycle2"> 
 
     <option value="A">A</option> 
 
     <option value="B">B</option> 
 
     <option value="C">C</option> 
 
    </select> 
 
</div> 
 
<div class="button-plans"> 
 
<a id="abc" href="something"> Order now </a> 
 
</div>

Но как бы часть выглядеть Javascript для того, чтобы это работало?

Например, если вы выбрали вариант «1» из раскрывающегося списка №1 и вариант «А» из раскрывающегося списка №2, ссылка на ссылку на www.link1.com, если вы выберете «2» и «А», она будет ссылаться на www .link2.com, 3A = www.link3.com, 1B = www.link4.com и т. д.

Надеюсь, мой вопрос имеет смысл.

С уважением. :-)

+1

Вы пробовали модифицировать код, чтобы делать то, что хотите? –

+0

Хотя это звучит как проблема XY, я бы предложил превратить это в реальную форму, но с помощью метода GET для представления. Таким образом, ваш выбор будет добавлен в строку запроса, и вы сможете обрабатывать их на странице приема. –

ответ

1

Измените выпадающие списки, чтобы они оба имели один и тот же класс (class = "dropdown-plans"), а затем вы можете привязать событие изменения к обоим. Когда либо выбрано, событие будет вызывать, и объединить значение обоих вариантов, а затем назначить результат на href.

JQuery

$('.dropdown-plans').change(function() { 
    var val = $('#basic_plan').val() + $('#basic_plan2').val(); 
    $('#abc').prop('href',val); 
}); 

JS Fiddle demo

UPDATE

Here is an updated fiddle, показывающий, как назначить ссылку на основе selectiosn сделаны из падения капли. При таком подходе вам нужно будет определить соответствие между различными комбинациями с выпадающими списками и связанной с ними ссылкой, которая должна быть назначена. Я показал только две комбинации в демо.

+0

Непонятно, доступен ли jQuery, поскольку вопрос не помечен этим тегом и не использует его в существующем javascript-коде. –

+0

jQuery можно использовать. Я отредактировал вопрос, потому что часть о том, какая ссылка ему нужна для вывода, была немного расплывчатой. Извиняюсь! – BrianB

+0

@BrianB Я добавил обновленную демоверсию в свой ответ. –

1
var sel = document.getElementById('basic_plan'); 
var sel2 = document.getElementById('basic_plan2'); 
if(sel.value){ 
sel2.onchange = function() { 
    document.getElementById("abc").href = sel.value+""+this.value + ".html"; 
}} 

Эта часть работает только в том случае, если установлен первый - выбор. Надеюсь это поможет.

1

Зарегистрировать обработчик событий, который обрабатывает изменение любого из двух выпадающих меню и получает значение выбранных параметров.

var sel = document.getElementById('basic_plan1'); 
var sel2 = document.getElementById('basic_plan2'); 

sel.onchange = dropdownChange; 
sel2.onchange = dropdownChange; 

function dropdownChange() { 
    var fd = document.getElementById("basic_plan1"); 
    var sd = document.getElementById("basic_plan2"); 

    var firstValue = fd.options[fd.selectedIndex].value; 
    var secondValue = sd.options[sd.selectedIndex].value; 

    document.getElementById("abc").href = firstValue + secondValue + ".html"; 
} 

См. Это JSFiddle.

+0

Hi Daniel, Прежде всего, большое спасибо за ваш отличный ответ - вам и всем. Теперь я понимаю, что было неясно, в чем состоит одна часть, и что я допустил ошибку в моем описании проблемы. Когда, например, вы выбираете 1 + B, выход не обязательно должен быть равен 1 и B. Возможно, ситуация может возникнуть, когда 1 + A = www.link1.com, 1 + B = www.link2.com, 1 + C = www.link3.com, 2 + A = www.link4.com и т. Д. Это имеет смысл? Извинения за ошибку, я только осознал это после того, как были опубликованы ответы. – BrianB

1

Вы можете добавить событие изменения в обоих выбирает, и построить URL после любого изменения

var basic_plan = document.getElementById("basic_plan"); 
 
    var basic_plan2 = document.getElementById("basic_plan2"); 
 
    function changeUrl() { 
 
     document.getElementById("def").innerHTML = "www.site.com/" + basic_plan.value + basic_plan2.value; 
 
    }
<div class="dropdown-plans"> 
 
    <select id="basic_plan" name="bill_cycle" onchange="changeUrl()"> 
 
     <option value="tri">3 Years - Rs. 100/month</option> 
 
     <option value="bi">2 Years - Rs. 200/month</option> 
 
     <option value="ann">1 Year - Rs. 100/month</option> 
 
    </select> 
 
</div> 
 
<div class="dropdown-plans2"> 
 
<select id="basic_plan2" name="bill_cycle2" onchange="changeUrl()"> 
 
    <option value="A">A</option> 
 
    <option value="B">B</option> 
 
    <option value="C">C</option> 
 
</select> 
 
</div> 
 
    <div class="button-plans"> 
 
    <a id="abc" href="something"> Order now </a> 
 
    <br/> 
 
    <span id="def"></span> 
 
</div>

1

Вы можете увидеть мой код ниже, или это link для справки:

function GotoLink() { 
 
    var sel = $('.basic_plan option:selected').text(); 
 
    var sel2 = $('.basic_plan2 option:selected').text(); 
 
    alert('www.site.com/' + sel + '' + sel2 + ''); 
 
    document.getElementById("abc").href = 'www.site.com/' + sel + '' + sel2; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="dropdown-plans"> 
 
    <select id="basic_plan" class="basic_plan" name="bill_cycle"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
    </select> 
 
</div> 
 
<div class="dropdown-plans2"> 
 
    <select id="basic_plan2" class="basic_plan2" name="bill_cycle2"> 
 
    <option value="A">A</option> 
 
    <option value="B">B</option> 
 
    <option value="C">C</option> 
 
    </select> 
 
</div> 
 
<div class="button-plans"> 
 
    <a id="abc" href="#" onclick='GotoLink()'> Order now </a> 
 
</div>

Смежные вопросы