2015-10-18 5 views
1

Я хочу установить значение по умолчанию в выпадающем меню на среднее (а не первое).Значение по умолчанию в выпадающем меню (JavaScript)

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

Код JavaScript является:

$(document).ready(function() { 
    $('.group').hide(); 
    $('#option1').show(); 
    $('#selectMe').change(function() { 
     $('.group').hide(); 
     $('#'+$(this).val()).show(); 
    }) 
}); 

Другой код:

<select id="selectMe"> 
    <option value="option1">S</option> 
    <option value="option2">M</option> 
    <option value="option3">L</option> 
</select> 

Пользователь выбирает значение, а затем изменяется соответствующим образом кнопку Купить. Таким образом, ...

<div> 
    <div id="option1" class="group">Button for size S</div> 
    <div id="option2" class="group">Button for size M</div> 
    <div id="option3" class="group">Button for size L</div> 
</div> 

Это прекрасно работает, но в данном случае, я хочу M быть по умолчанию, а не S (есть три размера здесь, но иногда больше).

+0

ли вы имеете в виду вы хотите кнопку для выбранной опции, чтобы быть видимыми, а две другие кнопки должны быть скрыты? Если это так, это не так, как это должно быть сделано. Должна быть только одна кнопка BUY. –

ответ

0

Просто используйте следующие фрагменты:

  1. С JQuery

    $(document).ready(function() { 
     
        var $select = $('#selectMe'); 
     
    
     
        $select.val("option2");//initial value 
     
        $("[id=" + $select.val() + "]").show() 
     
         .siblings().hide(); 
     
    
     
        $select.change(function() { 
     
         $("[id=" + $select.val() + "]").show() 
     
          .siblings().hide(); 
     
        }); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
     
    <select id="selectMe"> 
     
         <option value="option1">S</option> 
     
         <option value="option2">M</option> 
     
         <option value="option3">L</option> 
     
        </select> 
     
    
     
        <div> 
     
         <div id="option1" class="group">Button for size S</div> 
     
         <div id="option2" class="group">Button for size M</div> 
     
         <div id="option3" class="group">Button for size L</div> 
     
        </div>

  2. Или, Вы можете сделать это с помощью чистого JavaScript

    var selectBox = document.getElementById("selectMe") 
     
    selectBox.selectedIndex = parseInt(selectBox.length/2); 
     
    
     
    selectBox.onchange = function() { 
     
        changeButton(this.value); 
     
    } 
     
    
     
    changeButton(selectBox.value); 
     
    
     
    function changeButton(val) { 
     
        console.log(val) 
     
        var i = -1, elements = document.querySelectorAll('[class=group]'); 
     
        while (elements[++i]) { 
     
         console.log(elements[i]); 
     
         elements[i].style.display = (elements[i].id == val) ? "block" : "none"; 
     
        } 
     
    }
    <select id="selectMe"> 
     
        <option value="option1">S</option> 
     
        <option value="option2">M</option> 
     
        <option value="option3">L</option> 
     
    </select> 
     
    
     
    <div> 
     
        <div id="option1" class="group">Button for size S</div> 
     
        <div id="option2" class="group">Button for size M</div> 
     
        <div id="option3" class="group">Button for size L</div> 
     
    </div>

+0

Спасибо. Это отлично работает, но это не влияет на кнопку покупки.В этом случае, когда страница загружается, «М» находится в dropbown, но «Кнопка для размера S» все еще отображается. –

+0

Предлагаю два пути. 1.with jquery и 2. с чистым javascript. –

1

Почему бы вам не сделать selected?

<option value="option2" selected>M</option> 
+0

Спасибо. Это было мое первое усилие, но пока оно меняет значение на «М», кнопка «ПОКУПАТЬ» остается соответствующей «S». –

0

У вас есть 3 варианта

1.Using HTML selected свойств для выбора нужного параметра.

<select id="selectMe"> 
    <option value="option1">S</option> 
    <option value="option2" selected>M</option> 
    <option value="option3">L</option> 
</select> 

2.Using JQuery

$('#selectMe').val('option2') 

3.Использование чистый JS

document.getElementById('selectMe').value = 'option2'; 
0

Попробуйте это:

var options = $('#selectMe option'); 
var total = options.length + ((options.length % 2 == 0) ? 0 : -1); 
var value = $(options[total/2]).val(); 
$('#selectMe').val(value); 
+0

Спасибо. Это работает частично - но в этом случае, когда страница загружается, «М» находится в dropbown, но «Кнопка для размера S» (для ссылки на вопрос) по-прежнему отображается. –

+0

Почему кнопка для каждой опции? Не могли бы вы обработать одну кнопку, которую вы изменили ее метку, в соответствии с выбранной опцией. –

0

Попробуйте с одной кнопкой:

HTML:

<select id="selectMe"> 
<option value="option1">S</option> 
<option value="option2">M</option> 
<option value="option3">L</option> 
</select> 
... 
<div> 
<div id="button-size" class="group">Button for size S</div> 
</div> 

JQuery:

var options = $('#selectMe option'); 
var total = options.length + ((options.length % 2 == 0) ? 0 : -1); 
var value = $(options[total/2]).val(); 
$('#selectMe').val(value); 
changeButtonLabel(value); 

$('#selectMe').on('change', function (evt) 
{ 
    var value = $(this).val(); 
    changeButtonLabel(value); 
}); 

function changeButtonLabel(value) 
{ 
$('#button-size').html('Button for size ' + $('#selectMe').find('option[value=' + value + ']').html()); 
} 
Смежные вопросы