JQuery выбрать вариант, изменить содержание HTML.Что я делаю неправильно? - PullRequest
0 голосов
/ 22 марта 2012

Я думал, что это будет так же просто, как это ...

$('#yourSelect').change(function () {
    if ($(this).val() == '12500', '8500', '7000') {
        $("#textBox").html("+ £10 delivery");
    } else {
        $("#textBox").html("+ £6 delivery");
    }
});

ПЕРЕДНЯЯ

<select name="Amount" id="yourSelect">
    <option value="5000">5000</option>
    <option value="6000">6000</option>
    <option value="7000">7000</option>
    <option value="8500">8500</option>
    <option value="12500">12500</option>
</select>

<div id="textBox">+ £6 delivery</div>

я сошел с ума?что здесь не так?

Ответы [ 6 ]

3 голосов
/ 22 марта 2012

Вместо if ($(this).val() == '12500', '8500', '7000') { необходимо использовать оператор ||:

$('#yourSelect').change(function() {
    var value = $(this).val();
    if (value == '12500' || value == '8500' || value == '7000') {
        $("#textBox").html("+ £10 delivery");
    }
    else {
        $("#textBox").html("+ £6 delivery");
    }
});​

Как прокомментировал @ hafichuk , вы можете разобрать значение в число и использовать более простое условие:

if (parseInt($(this).val(), 10) >= 7000)
    $("#textBox").html("+ £10 delivery");
else
    $("#textBox").html("+ £6 delivery");

Вы можете сделать это еще проще с:

var output = parseInt($(this).val(), 10) >= 7000 ? '+ £10 delivery' 
                                                 : '+ £6 delivery';
$("#textBox").html(output);                                   
1 голос
/ 22 марта 2012

изменить условие if

var val = $(this).val();
if (val == '12500' || val ==  '8500' || val ==  '7000')

иначе

var arr = ['12500','8500','7000'];
$('#yourSelect').change(function () {
    if (arr.indexOf($(this).val()) !== -1) {
        $("#textBox").html("+ £10 delivery");
    } else {
        $("#textBox").html("+ £6 delivery");
    }
});
0 голосов
/ 22 марта 2012
$('#yourSelect').change(function() {
    var deliveryPrice = parseInt(this.value, 10) >= 7000 ? 10 : 6;
    $('#textBox').text('+ £' + deliveryPrice + ' delivery');
});
0 голосов
/ 22 марта 2012

В качестве альтернативы, вы можете использовать $(this).val() >= 7000, если доставка всегда стоит дороже, если сумма превышает определенную сумму. Тогда вам не нужно менять код при изменении выбора суммы, если только вы не изменяете порог более высокой стоимости доставки.

0 голосов
/ 22 марта 2012

попробуйте

$(document).ready(function() {
    $('#yourSelect').change(function() {
        if ($(this).val() == '12500' || $(this).val() == '8500' || $(this).val() == '7000') {
            $("#textBox").html("+ £10 delivery");
        }
        else {
            $("#textBox").html("+ £6 delivery");
        }
    });
})​

jsFiddle Link

0 голосов
/ 22 марта 2012

Ваш код внутри if не является допустимым логическим выражением.Изменить на это:

if ($(this).val() == '12500' ||  $(this).val() == '8500' || $(this).val() ==  '7000') {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...