2010-01-24 27 views
8

Có tương đương với phương thức observ_field Rails/Prototype sử dụng jQuery không có jRails không?Rails observ_field sử dụng jQuery

Tôi đang làm một search-as-you-type với will_paginate:

 

<%= observe_field('search', 
        :frequency => 2, 
        :update => 'results', 
        :loading => "Element.show('spinner')", 
        :complete => "Element.hide('spinner')", 
        :url => { :controller => 'foo', :action => 'search' }, 
        :with => "'search=' + escape(value)") %> 

Trả lời

10

Sử dụng jQuery, bạn cần phải sử dụng một bộ chọn, một cái gì đó như thế này nên làm việc

$("#search").bind("blur", function() { 
    $("#spinner").show(); // show the spinner 
    var form = $(this).parents("form"); // grab the form wrapping the search bar. 
    var url = form.attr("action"); // grab the URL from the form's action value. 
    var formData = form.serialize(); // grab the data in the form 
    $.get(url, formData, function(html) { // perform an AJAX get, the trailing function is what happens on successful get. 
    $("#spinner").hide(); // hide the spinner 
    $("#results").html(html); // replace the "results" div with the result of action taken 
    }); 
}); 

Trả lời cho nhận xét

Nếu bạn muốn phản ứng với việc đăng ký, sau đó thay thế dòng đầu tiên bằng

$("#search").bind("keyup", // etc... 
+0

Cảm ơn, nhưng điều này có vẻ như nó sẽ chỉ làm việc khi hộp tìm kiếm mất tập trung. Tôi đang tìm kiếm chức năng tìm kiếm như bạn. –

+0

@Mark Richman sửa đổi trong bài –

+0

Có thể thêm "chậm trễ" vào điều này để nó không gọi sau mỗi lần nhấn phím, nhưng thay vì đợi cho đến khi người dùng tạm dừng trong vài trăm mili giây? –