将“自定义”隐藏字段添加到simplecart(paypal)

时间:2013-05-06 20:07:41

标签: javascript simplecart

我想使用“自定义”隐藏表单字段将一些自定义数据发送到Paypal Checkout。当不使用SimpleCart.js时,这就像将其附加到html表单一样简单:

<input type="hidden" name="custom" value="My Custom data">

知道如何使用simplecart实现同样的目标吗?

查看源代码,我可以看到表单的创建/提交位置。

generateAndSendForm: function (opts) 
{
    var form = simpleCart.$create("form");
    form.attr('style', 'display:none;');
    form.attr('action', opts.action);
    form.attr('method', opts.method);
    simpleCart.each(opts.data, function (val, x, name) 
    {
        form.append(
            simpleCart.$create("input").attr("type","hidden").attr("name",name).val(val)
        );
    });
    simpleCart.$("body").append(form);
    form.el.submit();
    form.remove();
}

因此,我可以修改此代码以使其正常工作,但我确信必须有更好的方法。有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在简单的购物车中添加额外的东西需要添加一个简单的类......

例如,

<input type="hidden" name="custom" value="My Custom data" class="item_customdataname">

注意我的课程和命名法。 “item_customdataname”。

然而,由于simplecart的性质,我推荐以下内容;

<span style="display: none;" class="item_customdataname">My Custom data</span>

不是说使用隐藏输入不起作用......

电子

答案 1 :(得分:0)

老线程,但对其他人可能很有趣。 你正在寻找错误的方法:

generateAndSendForm:

用于生成一个表单(最有可能)将数据POST到后端

您想要关注的是:

simpleCart.extendCheckout({
  PayPal: function (opts) {
  [...]

您可能想要添加:

if (opts.custom) {
  data.custom = opts.custom;
}

在通知的等价物之后的某处:

if (opts.notify) {
 data.notify_url = opts.notify;
}

我没有亲自测试过,但它应该完全按照您的需要进行测试