我在HAML中有这个表格:
= form_for([:mobile,@disclosure], :html => {:id => "add_validation_to_ajax_form", :remote => true}) do |f|
但是add_validation_to_ajax_form函数有一个像这样的参数:
function add_validation_to_ajax_form(form_selector){
alert ("hello :)");
add_custom_validation_methods();
$(form_selector).submit(function(event) {
force_ckeditor_to_update();
}).validate({meta:"validate",onkeyup:false,validClass:"ok-input",
errorPlacement: function(error, element) {
}
});
}
我是HAML语法的新手,它应该如何调用JavaScript函数。现在提交表单时,此函数不显示hello弹出窗口。知道为什么它不起作用吗?
谢谢!
答案 0 :(得分:1)
那是因为你没有在任何地方调用该功能。如果你想要它执行,你必须调用它。
尝试将此添加到您的application.js
文件中。
$(function() {
add_validation_to_ajax_form('form#add_validation_to_ajax_form');
});
这会调用你的功能。但是,我认为你想要的功能看起来更像是这样:
$(function() {
$('form#add_validation_to_ajax_form').submit( function() {
alert ("hello :)");
add_custom_validation_methods();
force_ckeditor_to_update();
$(this).validate({
meta:"validate",
onkeyup:false,
validClass:"ok-input",
errorPlacement: function(error, element) {}
});
});
});
jQuery中的$(function(){ ... });
调用意味着:在页面加载完成后执行此操作。
$(selector).submit( function(){...});
函数意味着,在页面上找到选择器,并为其附加一个提交事件处理程序,以便在提交表单时,此函数中的内容会发生。
如果你必须在HAML中嵌入这样的东西,你可以在:javascript
后面缩进,如下:
:javascript
$(function(){ alert('The page is loaded!') });
HAML实际上与您的函数是否被调用无关。 HAML创建HTML。 HAML需要做的就是在某处包含javascript文件(javascript_include_tag
)。在Rails中> 3.1.x最佳做法是让你的布局包含你的application.js文件,并通过它来加载其余的javascripts。