使用选项输出而不是选项值

时间:2013-09-08 18:20:51

标签: javascript jquery

我设置了一个简单的jquery脚本来计算用户的服务成本。脚本效果很棒!但是,我的数据库端调用另一条路径。如何使用选项的实际输出进行计算而不是值

jquery:

    var $selections = $('#selections');
var $selects = $("select").change(function () {
    var total = 0;
    $selections.empty();
    $selects.each(function () {
        var $selected = $(this).find("option:selected");
        var price = parseFloat($selected.data("price")) || 0;
        total += price;
        if($selected.val() !== ''){
            $('<li />', {
                text: $selected.val() + $(this).parent().clone().children().remove().end().text()+" " + $selected.data("price")
            }).appendTo($selections)
        }
    })
    $(".summary").text('Est. Total $' + total);
})

HTML with PHP:

<select name="rooms" id="Areas"> 
<option value="" selected="selected">0</option>
 @foreach ($room as $rooms)
 <option data-price="{{ $rooms->pr_clean }}" value='{{ $rooms->room  }}'>{{ $rooms->room  }}</option>
 @endforeach
</select>

基本上我希望能够在值字段中添加不同的内容以进入数据库,但仍然使用{{ $rooms->room }}

计算他们想要选择多少空间

这里有一个关于我的脚本如何工作的基本概念的小提琴。 http://jsfiddle.net/arunpjohny/xf9Fp/

1 个答案:

答案 0 :(得分:1)

在jQuery .val()中,您会在<option>标记内定义 时选项的值。如果选项中没有值,它将获得选项的文本。

<option value="" selected="selected">0</option>
        ^------^                     ^
         value                      text

因为有些选项有value="",jQuery的.val()会获得该值,这是一个空字符串。如果value=""代码<option>内没有.val(),则会0

为确保您始终获得可以使用.text()选项的文字

请使用此功能: if($selected.text() !== ''){