我试图在选择框中放置一个onchange事件,但由于一些奇怪的原因,它不起作用。这是我的选择框:
<%= f.label :Tipe, "Tipe:", class: "control-label col-md-1" %>
<div class="col-md-3">
<%= f.select :Tipe, ['Mont','Vol'],onChange: "myFunction()", class: "form-control"%>
</div>
这是我的javascript:
<script>
function myFunction() {
alert( "Handler" );
}
</script>
答案 0 :(得分:1)
内联javascript被认为是不好的做法,因为这样的原因很难调试。也许你应该尝试:
在您的页面js文件或脚本标记中 - 无论哪个:
var myFunction = function(){
// do whatever
}
$('.form-control').on('change', function(){
myFunction();
});
'on'事件侦听器允许将任何偶数绑定到元素类/ id。更好的是,绑定到父元素的id,您可以确保事件保持连接到可能由ajax请求不时刷新的子事件。例如
# parent html.erb file
<div id="container">
<%= render 'form' %>
</div>
# inside form partial
<%= f.label :Tipe, "Tipe:", class: "control-label col-md-1" %>
<div class="col-md-3">
<%= f.select :Tipe,
['Mont','Vol'],
onChange: "myFunction()",
class: "form-control"
%>
</div>
# then in JS
$('#container').on('change', '.form-control', function(){
//do something
});
否则,我认为你的功能不起作用,因为你错过了分号:
"onChange: "myFunction();"
如果没有,请检查'onChange'/'change'绑定。什么构成'变化'?如果要在某些用户交互后执行操作,您最好使用“点击”。
希望这有帮助。