0

我打印了带有优惠券代码的明信片,上面写着“如果您输入优惠券代码 COMEAGAINSOON,可获得 10% 的折扣”

对我来说不幸的是,通过我的购物车 (PDG) 设置优惠券代码后,我发现优惠券代码的最大长度(未记录)为 11 个字符。所以我需要将用户的条目“COMEAGAINSOON”作为“COMEAGAINSO”提交到服务器

我认为必须(希望)有一个 js 或其他解决方案来做到这一点,而不是重新打印我的明信片。这基本上就像:我在工作中犯了一个严重/愚蠢的错误,并试图在我最终花费我的公司很多钱和(也许)我与他们的工作之前解决它。

我已经尝试了许多我在这里找到的解决方案(替换 innerhtml、缩短字符串),但似乎没有一个将更改的数据直接提交到正确的位置。此外,至少可以说,我在编码方面并不是特别先进(我是那些最终在必要时进行网络工作的设计师之一)。MaxLength 是一回事,但我认为无法输入他们被告知要使用的完整优惠券代码会使用户感到沮丧。

想法赞赏。非常感谢!!

PS - 我知道这是一个相当基本的困境,而且这里的社区非常先进,也许这不是这个问题的正确位置。但我需要把它扔出去。

<form method="post" action="/cgi-bin/redirect.cgi">
<input type="hidden" name="goto" value="/pottedstore/potted.cgi?display">
Potted Coupon Code:
<input size="17" type="text" name="pricing" value="">
<input name="submit" type="image" value="submit" src="/includes/images/submit.jpg" align="bottom" >
</form>
4

3 回答 3

0
<form method="post" action="/cgi-bin/redirect.cgi" onsubmit="this.pricing.value=this.pricing.value.substring(0,11)">
于 2013-09-09T19:58:49.753 回答
0

我对 HTML 不是很精通,但是如果您可以运行一个非常短的 javascript 来将值传递到您的服务器,那么我将使用的方法是 Javascript slice() 方法。

假设你有一个字符串:

var string = "This is a test string";

并且您在所述字符串上使用此代码,将“str”声明为您的新切片字符串(我使用多次迭代来演示边界):

var str1 = string.slice(0,5);
var str2 = string.slice(1,9);
var str3 = string.slice(3,11);
var str4 = string.slice(1,7);

然后,str1通过str4将如下:

str1 = "This "
str2 = "his is a"
str3 = "s is a t"
str4 = "his is"

在您的情况下,我会推荐以下代码段:

var couponCode = "COMEAGAINSOON";
var clippedCoupon = couponCode.slice(0,11);

结果:

clippedCoupon = "COMEAGAINSO"

更多信息可以在这里找到。祝你好运。

于 2013-09-09T20:04:28.987 回答
0

有多个地方可以解决这个问题:客户端、服务器端、API 端。

客户端解决方案易于实施,并且可以在大多数情况下工作。当用户有意关闭 JavaScript 或使用不支持 JavaScript 的浏览器时,它将不起作用以下是如何在 JavaScript 中执行此操作的示例:

JavaScript:

window.onload = function () { // so it runs once the DOM is loaded
    var form = document.forms[0]; //assuming you only have one form on the page
    form.onsubmit = function () { // when the form is submitted
        var pricing = form.pricing, // cache the DOM lookup for the input
            couponCode = pricing.value; // cache the value
        if (couponCode.length > 11) { // if the value has more than 11 characters
            couponCode = couponCode.substr(0, 11); // keep the left-most 11 characters
            pricing.value = couponCode; // set the input value to the coupon code
        }
    };
};

同样,服务器端也足够简单,可以在任何情况下实现和工作。以下是 PHP 和 Perl 中的一些示例(如您发布到的redirect.cgi):

PHP:

$couponcode = $_REQUEST["pricing"]
if (strlen($couponcode) > 11) {
    substr($couponcode, 0, 11)
}

珀尔:

my $couponcode = $q->param('pricing');
if (length($couponcode) > 11) {
    substr($couponcode, 0, 11)
}

这留下了 API 端,它既不简单也不快速实现(通常),并且应该在所有情况下都可以工作。由于您要为产品 (PDG) 付费,因此您可以与 PDG 的制造商合作以接受更长的优惠券代码,这可能有助于其他遇到类似问题的客户。这将花费最长的时间来实施,但它不是像上面的例子那样的创可贴修复。

于 2013-09-09T20:38:16.823 回答