我打算尝试破解 ReadForm 函数,但我编写了一个名为 CheckSize 的小 Java 脚本片段,在 ReadForm 函数将表单数据放入变量之后,我在表单命令中挂起了 onsubmit。
在 wp_shopping_cart.php 文件中,我将 onsubmit 修改为如下所示 --> onsubmit="ReadForm(this, true);CheckSize (this, true); <--
ReadForm 函数将 small、medium 或 large 放入名为“variation1”的变量中,并将 price 放入名为“price”的变量中,因此在 CheckSize 函数中,我测试了 Variation1 的值,并在他们选择中号或大号时相应地更改价格变量。
我编辑了主题的 header.php 文件,并在 /head 标记前面对我的 price.js 文件(仅包含下面的 CheckSize 函数)进行了 JavaScript 调用,以便在加载该主题中的任何页面时加载我的函数。
我的函数贴在下面(price.js 的全部内容)。默认的基本价格是小件商品的价格,在我的例子中是 20 美元。如果他们选择中价,我会在小价上加 15 美元。如果他们选择大的,我会在小价格上加 30 美元。这对我有用,因为我所有的小尺寸产品都是 20 美元,但是可以很容易地修改此代码,以将基本价格乘以中型和大型的百分比,如果您的产品具有不同的基本价格,这将使其更加灵活。(即中号可以是小号的 150%,大号可以是小号的 200%)
// --
function CheckSize(form_name) {
// dump any variable for checking contents next
// alert('Price:' + form_name.price.value);
// return false;
// next set price to a numeric variable value of 0
var price= new Number;
// next set price to base price times 1 so it doesn't become a string variable
price=form_name.price.value*1;
// size medium price adjustment is next
if(form_name.variation1.value=='medium')
{
form_name.price.value=price+15;
}
// size large price adjustment is next
if(form_name.variation1.value=='large')
{
form_name.price.value=price+30;
}
// dump any variable for checking contents next
// alert('Price:' + form_name.price.value);
// return false;
} // end of function CheckSize()
// --
对上面这段代码的调用(onsubmit)的放置导致它在变量被 ReadForm 函数“破坏”之后但在它们被发送到购物车之前执行。我是一个大型机老手,只是在玩它,所以我希望我的术语不会让你失望。昨天我对 JavaScript 的了解足够多,可以做我必须做的事情,所以对于专家来说它可能看起来很草率。如果它让你畏缩,我很抱歉。
谢夫