在研究ecshop二次开发的过程中,必须知道ecshop购物车订单提交校验原理.我们修改ecshop.就肯定会牵涉到ecshop购物车的问题。ecshop购物车在提交订单的哪个流程,是非常复杂的。
首先我们看ecshop购物车的flow.php中的checkout.在这里面,不但要可以显示ecshop购者的收货地址,还需要显示ecshop购物车中的商品。这个页面还有支付方式的选择,配送方式的选择,积分和红包的使用。都在这个页面.
首先我们看这个页面的校验js.查看form中的 onsubmit="return checkOrderForm(this)
这个函数被包含在js/shopping_flow.js里面,我们打开ecshop的js.可以看到checkOrderForm()函数.
function checkOrderForm(frm) { var paymentSelected = false; var shippingSelected = false;
// 检查是否选择了支付配送方式 for (i = 0; i < frm.elements.length; i ++ ) { if (frm.elements[i].name == 'shipping' && frm.elements[i].checked) { shippingSelected = true; }
if (frm.elements[i].name == 'payment' && frm.elements[i].checked) { paymentSelected = true; } }
if ( ! shippingSelected) { alert(flow_no_shipping); return false; }
if ( ! paymentSelected) { alert(flow_no_payment); return false; }
// 检查用户输入的余额 if (document.getElementById("ECS_SURPLUS")) { var surplus = document.getElementById("ECS_SURPLUS").value; var error = Utils.trim(Ajax.call('flow.php?step=check_surplus', 'surplus=' + surplus, null, 'GET', 'TEXT', false));
if (error) { try { document.getElementById("ECS_SURPLUS_NOTICE").innerHTML = error; } catch (ex) { } return false; } }
// 检查用户输入的积分 if (document.getElementById("ECS_INTEGRAL")) { var integral = document.getElementById("ECS_INTEGRAL").value; var error = Utils.trim(Ajax.call('flow.php?step=check_integral', 'integral=' + integral, null, 'GET', 'TEXT', false));
if (error) { return false; try { document.getElementById("ECS_INTEGRAL_NOTICE").innerHTML = error; } catch (ex) { } } } frm.action = frm.action + '?step=done'; return true; }
在这里我们可以看出,首先定义了支付方式和配送方式的判断变量.
var paymentSelected = false; var shippingSelected = false;
|