Как сложить итоговую цену атрибута данных из зацикленных вариантов выбора? - PullRequest
1 голос
/ 20 апреля 2020

Я нашел эту топи c, которая так близка к моему случаю: как сумма данных атрибута общая цена?

Где:

function validate(){
    var $selected = $('#mark, #series').children(":selected");
    var sum = 0;

    $selected.each(function() {
        sum += $(this).data('price') || 0;
    });

    $('#total').html(sum === 0 ? '' : sum + '$');
    }
        validate();

    $('#mark, #series').on('change', function() {
        validate();
    });

и:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="mark" name="mark">
    <option value="">--</option>
    <option value="bmw" data-price="200">bmw</option>
    <option value="audi" data-price="400">audi</option>
</select>

<select id="series" name="series">
    <option value="">--</option>
    <option value="series-1" data-price="2000"  >3 series</option>
    <option value="series-1" data-price="3000"  >5 series</option>
</select>

<div id="total"></div>

Тезисный код работает именно так, как я хочу, однако, в моем случае параметры выбора являются фактически oop выборами:

for ($i = 1; $i <= $DayCountValue; $i++) 
    echo "<div class='col'><select name='tour" . $i . "[]' id='tour" . $i . "' class='form-control' onChange='tour_price" . $i . "(this.value), tour_name" . $i . "(this.value), tour_description" . $i . "(this.value);'>";
    echo "<option value=''>Select</option>";

    mysqli_fetch_assoc($tour_check);
    foreach ($tour_check as $tour) {

        echo "<option value='" . $tour["price_id"] . "' data-picture='" . $tour["thumbnail"] . "' data-price='" . $tour["price"] . "'>" . $tour["name"] . "</option>";

                }        
        echo "</select></div>";

Как я могу позволить javascript код для извлечения значений из каждой выбранной опции? Я пытался использовать this, но это не сработало.

С уважением,

1 Ответ

0 голосов
/ 20 апреля 2020

Я решил, изменив код Javascript на:

function validate(){
    var $selected = $("select").children(":selected");
    var sum = 0;

    $selected.each(function() {
        sum += $(this).data('price') || 0;
    });

    $('#total').html(sum === 0 ? '' : sum + '$');
}
validate();

$("select").on('change', function() {
    validate();
});

Где я могу взять значения из каждого <select> в документе.

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