2012-10-22 17 views
2

在我new.html.erb动态计算出的值,我有以下几点:的Rails:显示在我的形式

<%= 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得到的信息,但我仍然没有看到任何东西。

+0

“我应该看到25运费后出现”。您正在更改'#payment_value'的值,而不是'#shipping_charges'。 – shime

+0

错字。我编辑了这个问题来反映这一点。即使我这样做:<%= hidden_​​field:shipping_charges,:value => 50%>在“运费”之后,我仍然没有看到任何东西。 – user1765002

+0

确保你正在加载JavaScript文件。我会用'alert(“yup,loaded”)之类的方法做到这一点;' – shime

回答

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,如跨度,使用.value,你必须使用innerHTML(或更好,使用jQuery的.html()方法更好的跨浏览器支持):

function add_rush_shipment_charges() 
{ 
    document.getElementById('shipping_charges').innerHTML = '25'; 
} 
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()当你想!

+0

这不起作用。我不确定total_shipping是从哪里来的,但是我假设你打算在new.html.erb中添加一个像这样的语句:<%= hidden_​​field:total_shipping_charges%>,然后将onclick操作改为“calculate_total_cost”。这没有显示。即使我给total_shipping分配了一个值,它也没有显示(我修正了你在发布的代码中的错字 - 缺少> – user1765002

+0

请检查我给出的标记!我已经添加了一个id为'total_shipping ' – HungryCoder

+0

原始代码的问题在于你有两个元素具有相同的DOM id,隐藏的输入和范围。HungryCoder通过更改范围中的id值来解决此问题。 –