我在一个页面上有几个选项框,我正在尝试获取所选选项的值和文本并将它们插入隐藏字段,如果我只选择第一个(第一次在页面重新加载后)它不起作用,但如果我在页面重新加载后选择第一个和第二个,它可以工作,
使它工作我必须先从第二个选择框中选择一个选项,所有选项都可以。
这是该网站的链接。 http://www.snappy-pizza.net/sides.php
任何帮助将不胜感激。
<form>
<input type="hidden" value="MIXED SALAD" />
<select class="select" name="select3" id="select3">
<option value="0">0</option>
<option value="1.99">1</option>
<option value="1.99">2</option>
<option value="1.99">3</option>
<option value="1.99">4</option>
<option value="1.99">5</option>
<option value="1.99">6</option>
<option value="1.99">7</option>
<option value="1.99">8</option>
</select>
</form>
<form>
<input type="hidden" value="Onion Rings" />
<select class="select" name="select" id="select">
<option value="0">0</option>
<option value="1.99">1</option>
<option value="1.99">2</option>
<option value="1.99">3</option>
<option value="1.99">4</option>
<option value="1.99">5</option>
<option value="1.99">6</option>
<option value="1.99">7</option>
<option value="1.99">8</option>
</select>
</form>
$(function() {
$('#my-add-button-sides').click(function() {
var qty = [];
var price = [];
var items_names = [];
var final_price = 0;
$('.select option:selected').each(function() {
var $this = $(this);
if (($this.text()) > 0) {
qty.push($this.text() );
price.push($this.val() );
items_names.push($this.parent().prev('input:hidden').val () );
}
$this.attr('selected','');
});
var total_price = $.map(qty, function (n,i) {
return n * price[i];
});
$.each(total_price,function() {
final_price += this;
});
var qty_items = $.map(qty, function(n,i) {
return n +"--"+ items_names[i];
});
var randomNumber = Math.floor((Math.random() * 9000) + 200);
$('input[name=my-item-id]').val(randomNumber);
$('input[name=my-item-name]').val(qty_items.join('\n') );
$('input[name=my-item-price]').val(final_price);
});
});
答案 0 :(得分:1)
我已经测试了你的代码,即使只使用了第一个选择框,我也有一个final_price结果。我选择第一个框值1并获得1.99响应。检查你的例子。
更新 PizzaPrice未定义是我得到的错误。 尝试将第一个代码块也放在$(function(){}中,这是ready()函数的包装器。你的代码没有访问PizzaPrice变量。