2

在我的 new.html.erb 中,我有以下内容:

<%= hidden_field :shipping_charges %>
<%= label_tag :rush_shipment, "Rush My Shipment" %>>
<%= check_box_tag :rush_shipment, :checked => false, :onclick => "add_rush_shipment_charges()" %>

    <p>My Shipping charges: <span id="shipping_charges"></span> 

在我的 javascript 文件中,我有以下内容:

function add_rush_shipment_charges()
{
    document.getElementById('shipping_charges').value = 25;
}

当我点击复选框时,我应该会在运费后看到 25,但没有任何反应。有任何想法吗。

编辑:

请注意,我编辑了问题以反映我从答案 #1 中获得的信息,但我仍然没有看到任何内容。

4

2 回答 2

2
Where you want to show the shipping charges? Lets assume your view is like:
<%= hidden_field :shipping_charges %>
<%= label_tag :rush_shipment, "Rush My Shipment" %>>
<%= check_box_tag :rush_shipment, :checked => false, :onclick => "add_rush_shipment_charges()" %>
<h3> You shipping charges are: <span id="total_shipping"></span</h1>

现在,在计算总运费后,您只需更新跨度

function calculate_total_costs(){
  //cost calculation logics
  document.getElementById('total_shipping').value = TOTAL_COSTS
}

现在,在需要时调用该函数calculate_total_costs()

于 2012-10-22T10:40:11.803 回答
1

您的复选框标签不正确:

<%= check_box_tag :rush_shipment, :checked => false, :onclick => "add_rush_shipment_charges()" %>

应该:

<%= check_box_tag :rush_shipment, "yes", false, :onclick => "add_rush_shipment_charges()" %>

在您修复此问题之前,JavaScript 方法不会在点击时被调用。

JavaScript 方法也不正确,因为不能设置标准 DOM,比如 span,使用.value,必须使用 innerHTML(或者更好,使用 jQuery 的.html()方法以获得更好的跨浏览器支持):

function add_rush_shipment_charges()
{
    document.getElementById('shipping_charges').innerHTML = '25';
}
于 2012-10-22T23:43:51.390 回答