我有一个网站,在将产品添加到购物车之前,用户必须选择插件。这些插件分为两部分。我使用选择框插件(仅需要1个选项时)和1个具有多个插件的组进行分组,其中用户可以选择多个复选框。复选框工作正常,但选择框选项除外。选择框自动填充。 (smarty的):
{if $menuaddonslist[add].mainaddonsname neq '' && $menuaddonslist[add].mainaddonsnamecnt eq 1}
{$objSearchDetails->menuSubAddonsList($menuaddonslist[add].addonparentid,$menuaddonslist[add].menuaddons_menuid)}
<div class="single" id="singleAddon-{$menuaddonslist[add].addonparentid}">
<span class="addonTitle">{$menuaddonslist[add].mainaddonsname|stripslashes}</span>
<input type="hidden" name="singleopt" class="singleopt" id="singleopt" value="single">
<select class="popNameInput" name="addonstype_{$menuSubaddonslist_cnt}_{$smarty.section.subadd.rownum}" style="border: 1px solid #dedede;margin-bottom:15px;width:230px;">
{section name="subadd" loop=$menuSubaddonslist}
{if $menuSubaddonslist[subadd].subaddonsname neq ''}
{if $menuaddonslist[add].mainaddonsnamecnt eq '1'}
<option value="{$menuSubaddonslist[subadd].menuaddons_id}">
{$menuSubaddonslist[subadd].subaddonsname|ucfirst|stripslashes}
{if $menuSubaddonslist[subadd].menuaddons_priceoption eq 'Paid'}
(+ €{$menuSubaddonslist[subadd].menuaddons_price} )
{/if}
</option>
{/if}
{/if}
{/section}
</select>
</div>
<div style="clear:both"></div>
这将输出最少1个选择框,最多可输出任意数量的值。一切正常。
现在,当用户点击添加到购物车时,所有这些插件都会添加到购物车中。在javascript中,我有2个数组,其中包含插件的值(id's)
现在这是奇怪的部分。在网站上,当我打开弹出窗口,看到插件并点击添加到购物车,有时它的工作..有时“插件”var是未定义的...我可以打开相同的弹出窗口10次,并在那10次2时间插件将被添加正常,另外8次插件阵列再次未定义我不知道这里是代码:
//Add To Cart
function addToMenu(resfea){
var menuid = $("#menuid").val();
var resid = $("#restid").val();
var quantity = $("#qty").val();
//var menuspl_ins = $("#splins").val();
var menuspl_ins = check_undefined(menuspl_ins);
//var offer = $("#offer").val();
var offer = check_undefined(offer);
$.post(jssitebaseUrl+'/ajaxFile.php',{"menuid":menuid,"action":"checkCategoryName"},function(response){
//alert(response);
var sizeoption = $("#sizeoption").val();
if(sizeoption == 'fixed'){
var menuprice = $("#menuprice").val();
}
var addonstype1 = $("#addonstype1").val();
//alert(addonstype1);
if(addonstype1 > 0){
var multipleoption = $("#multipleopt").val();
var singleoption = $("#singleopt").val();
var singleoptioncnt = $("#singleoptcnt").val();
if(singleoption == 'single'){
var AddonstypeSingle=[];
$("select[name^=addonstype_] option:selected").each(function(){
//var singleSelect = $("select").val;
if (this.value != "") {
---->THIS MUST ALWAYS ALERT SOME ID WHEN THERE ARE SELECT BOXES//alert(this.value);
AddonstypeSingle.push(this.value);
}
});
}
if(multipleoption == 'multiple'){
//Check Box Value
var totaddonsid = document.orderpop.addonstype.length;
if(totaddonsid == undefined){
if(document.orderpop.addonstype.checked==true){
addonstype=document.orderpop.addonstype.value;
}
var Addonsmul=addonstype;
if( Addonsmul !='' ){
var Addonstypemultiple = Addonsmul+',';
}
}else{
if(totaddonsid > 0){
var addonstype=new Array();
var j=0;
for(var i=0;i<totaddonsid;i++){
if(document.orderpop.addonstype[i].checked==true){
addonstype[j]=document.orderpop.addonstype[i].value;
j++;
}
}
var Addonsmul=addonstype;
if( Addonsmul !='' ){
var Addonstypemultiple = Addonsmul+',';
}
}
}
}
if(Addonstypemultiple == undefined){
var Addons = AddonstypeSingle;
}
else if(AddonstypeSingle == undefined){
var Addons = Addonstypemultiple;
}
else{
var Addons = Addonstypemultiple+AddonstypeSingle;
}
}
//alert(Addons); <-- RETURNS UNDEFINED WHEN THE SELECTBOX VALUES ARE NOT ALERTED
Addons = check_undefined(Addons);
menuprice = check_undefined(menuprice);
$('.restaurantMenuAddtocartmm').load(jssitebaseUrl+"/ajaxAction.php?menuid="+menuid+"&offer="+offer+"&resid="+resid+"&menuprice="+menuprice+"&Addons="+Addons+"&quantity="+quantity+"&action=addtoItem", { 'menuspl_ins':menuspl_ins });
});
return false;
}
var AddonstypeSingle = []如果有选择框,则不能为空,但奇怪的是..有时它会提醒ids很好,有时它不会发出警报或未定义警报。所以由于某种原因,每个都不会像它应该的那样一直工作......
我尝试了所有的东西,但由于某种原因,它添加插件就好了,然后它只是不添加它们等我花了几个小时,我仍然没有线索,我希望有人可以带领我朝着正确的方向
答案 0 :(得分:0)
这是一个关闭问题。
在这部分:
if(Addonstypemultiple == undefined){
var Addons = AddonstypeSingle;
}
else if(AddonstypeSingle == undefined){
var Addons = Addonstypemultiple;
}
else{
var Addons = Addonstypemultiple+AddonstypeSingle;
}
}
//alert(Addons); <-- RETURNS UNDEFINED WHEN THE SELECTBOX VALUES ARE NOT ALERTED
您正在if的函数中定义var插件。这不适用于您的提醒功能。我可以建议一个简单的解决方案:
var Addons;
if(Addonstypemultiple == undefined){
Addons = AddonstypeSingle;
}
else if(AddonstypeSingle == undefined){
Addons = Addonstypemultiple;
}
else{
Addons = Addonstypemultiple+AddonstypeSingle;
}
}
alert(Addons);