2009-12-05 30 views
0

我有一個ActiveScaffold形式的Select下拉菜單。我試圖隱藏窗體上的一些字段,如果選擇了特定的值。何處爲ActiveScaffold表單自定義JavaScript/Prototype代碼?

一個[類似的問題] [1]發佈到ActiveScaffold Google Group,提供的Prototype代碼看起來像我所需要的,但我不知道我需要添加這個。

-

我試着服用 - 水平-子窗體-header.html.erb的副本從供應商/插件/ active_scaffold /前端/默認/視圖,將其放置在我的控制器意見的文件夾,然後添加我的腳本到它:

<script type="text/javascript"> 
    document.observe('dom:loaded', function() { //do it once everything's loaded 
    //grab all the product-input classes and call 'observe' on them : 
    $$('.product-input').invoke('observe', 'change', function(e) { 
     this.up('td').next('td').down('input').hide(); 
    }); 
    }); 
</script> 

...但似乎不能正常工作。如果我使用URL直接轉到表單(即http://localhost:3000/sales/20/edit?_method=get),它將起作用。但是,當我使用主列表視圖(即http://localhost:3000/sales/)測試它並通過Ajax打開表單時,它不起作用。看看HTML源代碼就不會出現。

回答

0

添加JavaScript的常見位置是在public/javascripts中找到的application.js。我自己是一個jQuery人,但是我確信你可以用prototype來連接到application.js中的onchange事件。快速搜索看起來像Event.observe應該做的伎倆。