2012-04-23 38 views
0

我有這樣的形式HAML:HAML - 如何使用選擇器調用窗體?

= form_for([:mobile,@disclosure], :html => {:id => "add_validation_to_ajax_form", :remote => true}) do |f| 

但add_validation_to_ajax_form功能具有AA參數是這樣的:

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) { 

      } 
     }); 
} 

而且我是新來的是應該如何調用JavaScript的HAML語法功能。當提交表單時,此函數不顯示hello彈出窗口。任何想法,爲什麼它不工作?

謝謝!

回答

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) {} 
    }); 
    }); 
}); 

$(function(){ ... });調用jQuery中的意思是:當頁面加載完畢做到這一點。

$(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文件,然後通過它加載你的其他javascript文件。