<div class='divver'>
Quantity:
<select class='box' name='qty' id='quantity'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
</select>
</div>
<script type="text/javascript">
var s = document.getElementById("quantity");
var quant = s.options[s.selectedIndex].text;
function checkIt(){
alert (quant);
}
</script>
提交成功后我正在运行checkIt。
function submitQuickview()
{
if(productForm.validate()){
//submit the form with ajax
new Ajax.Request($('product_addtocart_form').action, {
parameters: $('product_addtocart_form').serialize(true),
onSuccess: checkIt
});
}
return false;
}
有什么问题?无论提交的选项的值如何,它始终将1作为quant var警告。有什么想法吗?请注意,我没有使用jQuery并且在Vanilla或Prototype框架中工作。
答案 0 :(得分:3)
这是因为您在加载页面时为quant变量赋值。
为了获得当前值
1)您需要在 checkin 功能中读取所选值
将代码更改为:
var s = document.getElementById("quantity");
function checkIt(){
var quant = s.options[s.selectedIndex].text;
alert (quant);
}
或强>
2)触发select的onchange事件时更改值。 类似的东西:
var s = document.getElementById("quantity");
var quant = s.options[s.selectedIndex].text;
s.onchange = function(){
quant = s.options[s.selectedIndex].text;
}
function checkIt(){
alert (quant);
}
答案 1 :(得分:0)
此方法避免创建循环引用(或创建循环引用的闭包),并避免全局变量。
function submitQuickview() {
var s = document.getElementById("quantity");
if(productForm.validate()){
//submit the form with ajax
new Ajax.Request($('product_addtocart_form').action, {
parameters: $('product_addtocart_form').serialize(true),
onSuccess: checkIt
});
}
return false;
}
function checkIt() {
var s = document.getElementById("quantity");
// grab your value
var quant = s.options[s.selectedIndex].text;
alert(quant);
}