ecshop购物车订单提交校验原理

2011-03-14 22:07 来源:www.chinab4c.com 作者:熊斌

      在研究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;

 

上海租车