2010-05-10 123 views
0

我有一个页面,允许用户选择表单中的一些东西,它会使用javascript计算重量。它将其分解成5个变量,我需要发送到另一个页面。最初我只是把它放到一个文本框中,然后我发布该文本框。但是我不想有5个文本框。所以现在我需要以某种方式发送或发布五个变量到另一个页面。这是我的javascript功能。我需要张贴weightBoxOne - weightBoxFive发送Javascript变量

js函数

function getWeight(){ 
     var weightBoxOne; 
     var weightBoxTwo; 
     var totalWeight; 
     var box = .5; 
    var quantity = document.dhform.quantity.value; 
    var cardSize = document.dhform.cardSize.value; 
    if(cardSize == 0.0141){ 
    if(quantity <= 1000){ 
    weightBoxOne = (quantity * cardSize) + box; 
    totalWeight = weightBoxOne; 
    }else if(quantity > 1000 && quantity <= 2000){ 
    weightBoxOne = (1000 * cardSize) + box; 
    weightBoxTwo = ((quantity - 1000) * cardSize) + box; 
    totalWeight = weightBoxOne + weightBoxTwo; 
    }else if(quantity > 2000 && quantity <= 3000){ 
    weightBoxOne = (1000 * cardSize) + box; 
    weightBoxTwo = (1000 * cardSize) + box; 
    weightBoxThree = ((quantity - 2000) * cardSize) + box; 
    totalWeight = weightBoxOne + weightBoxTwo + weightBoxThree; 
    }else if(quantity > 3000 && quantity <= 4000){ 
    weightBoxOne = (1000 * cardSize) + box; 
    weightBoxTwo = (1000 * cardSize) + box; 
    weightBoxThree = (1000 * cardSize) + box; 
    weightBoxFour = ((quantity - 3000) * cardSize) + box; 
    totalWeight = weightBoxOne + weightBoxTwo + weightBoxThree + weightBoxFour; 
    }else{ 
    weightBoxOne = (1000 * cardSize) + box; 
    weightBoxTwo = (1000 * cardSize) + box; 
    weightBoxThree = (1000 * cardSize) + box; 
    weightBoxFour = (1000 * cardSize) + box; 
    weightBoxFive = ((quantity - 4000) * cardSize) + box; 
    totalWeight = weightBoxOne + weightBoxTwo + weightBoxThree + weightBoxFour + weightBoxFive; 
    } 
    }else if(cardSize == 0.00949){ 
    if(quantity <= 4000){ 
    weightBoxOne = (quantity * cardSize) + box; 
    totalWeight = weightBoxOne; 
    }else{ 
    weightBoxOne = (4000 * cardSize) + box; 
    weightBoxTwo = ((quantity - 4000) * cardSize) + box; 
    totalWeight = weightBoxOne + weightBoxTwo; 
    } 
    } 
    document.rates.weight.value = totalWeight; 
    } 
    //--> 

这是最初发布

<form action="getRates.php" name="rates" method="post" onSubmit="popupform(this, 'join')"> 
          <table style="width: 216px"> 
          <tr> 
           <td style="width: 115px; height: 49px;"><span class="style16">Weight</span><br/> 
            <input type="text" id="weight" name="weight" size="10" maxlength="4"/> 
           </td> 
           <td align="right" style="width: 68px; height: 49px;" valign="top"><span class="style16">Zip Code</span><br/> 
            <input type="text" id="zip" name="zip" size="10" maxlength="5"/> 
           </td> 
          </tr> 
          <tr> 
           <td style="width: 115px"> 
     <input name="submit" type="submit" value="Get Rate Costs" style="width: 138px" /> 
+2

刚刚成立了一个快速的JSON网络服务和使用jQuery的岗位职能,或其他一些流行的Ajax框架的服务器上(jQuery是最好不过) – 2010-05-10 17:43:17

+0

...你不能使用数组而不是'weightBoxNineThousand'吗? – kennytm 2010-05-10 17:43:19

+0

只有五个,但仍然不帮助我发布 – shinjuo 2010-05-10 17:44:56

回答

1

我已经通过JavaScript的变量分为隐藏字段做了类似的事情形式并像往常一样将它们张贴在表单中。

只需添加一些隐藏字段到表单中使用标签是这样的:

<input type="hidden" id="hidden-field-1" value="">

然后你就可以调整隐藏字段的值,你的JavaScript变量相匹配,并传递到下一个值页:

document.rates.hidden-field-1.value = totalWeight; 

只要记住,这种形式的JavaScript(我直接从您的文章了)只会在Internet Explorer中可靠地工作......一个更好的办法是使用:

document.forms['rates'].hidden-field-1.value = totalWeight; 
+0

真棒我正在尝试这个 – shinjuo 2010-05-10 17:50:30

+0

这很有用,非常感谢 – shinjuo 2010-05-10 19:21:34

0

忽略了一个事实,你可以破解这个有少量的变量工作,并假设你在服务器上同时控制客户端Javascript和接收页面,而不是不同的变量

  1. 使用数组什么时候应该使用数组
  2. 数组序列化到使用JSON
  3. 后的表单字段串到你的接收页面服务器上(隐藏或以其他方式)
  4. 反序列化的字符串JSON字符串到一个数组
  5. 使用它