2009-07-09 28 views
5

Cho đến nay tôi không tìm thấy cùng một vấn đề trong các câu hỏi khác trên trang web này. Dưới đây là những gì tôi đang trải nghiệm:ASP.NET jQuery AutoComplete - hộp văn bản không trả lời sau lần tìm kiếm đầu tiên

Tôi có ứng dụng ASP.NET WebForms với UpdatePanel chứa khu vực tìm kiếm nơi tôi có ASP: TextBox mà tôi sử dụng cho tự động hoàn thành jQuery.

$(document).ready(function() { 
    $("#tabContainer_tabSearchBreaks_txtSearchName").autocomplete("AutoCompleteEmployee.ashx", { minChars: 3, maxItemsToShow: 10 }); 
}); 

Toàn bộ điều này hoạt động tốt, nhưng nếu tôi nhấp vào ASP: Nút và xử lý một số mã cho khu vực tìm kiếm, javascript tự động hoàn tất không còn hoạt động nữa.

Bất kỳ ý tưởng nào ???

Có một giải pháp để đặt lại hộp văn bản để gọi mã js.

[Update - Xem thêm Mã] Dưới đây là những gì các nút cập nhật làm cho khu vực tìm kiếm đó là tách biệt với mã autocomplete:

try { 
    int employeeID; 
    string[] namelst = txtSearchName.Text.Split(new string[] { 
     " " 
    }, StringSplitOptions.None); 
    employeeID = int.Parse(namelst[2].Substring(1, namelst[2].Length - 2)); 
    string name = namelst[0] + " " + namelst[1]; 
    var breaks = bh.ListBreaksForEmployeeByDate(employeeID, DateTime.Parse(txtFromDate.Text), txtToDate.Text.Length > 0 ? DateTime.Parse(txtToDate.Text).AddDays(1).AddSeconds(-1) : DateTime.Today.AddDays(1).AddSeconds(-1)); 

    if (breaks.Count() > 0) { 
     lblEmployeeTitle.Text = "Breaks for " + name; 
     gridSearchBreaks.DataSource = breaks; 
     gridSearchBreaks.DataBind(); 
    } 
} catch {} 

Hope this helps. Hiện tại, tôi đã ẩn tab chứa vấn đề này từ người dùng.

+0

"xử lý một số mã cho khu vực tìm kiếm"? pls xây dựng. – Colin

Trả lời

10

Tôi nghĩ bạn đang gặp sự cố cổ điển với các điều khiển ASP.NET UpdatePanel và jQuery. Vấn đề là sau đây: Mã jQuery (trong trường hợp của bạn nó tự động hoàn thành, nhưng nó có thể là bất cứ điều gì) hoạt động tốt trên tải trang, nhưng nó ngừng hoạt động sau khi một phần postback. Nếu đây là trường hợp, có một vài điều bạn cần phải hiểu về cách sử dụng jQuery với các điều khiển UpdatePanel.

Đầu tiên, tất cả các sự kiện ràng buộc được xác định bằng $ (tài liệu) đã ngừng hoạt động sau khi postback một phần đầu tiên (và tôi giả định rằng nút bấm của bạn gây ra một phần postback). Đây chỉ là cách ASP.NET hoạt động. Vậy làm thế nào để bạn sửa nó? Vâng, có một số cách để giải quyết vấn đề này. Một khuyến nghị điển hình là thay thế $ (tài liệu). Đã có với sự kiện pageLoad của ASP.NET AJAX. Điều này có thể giải quyết một vấn đề, nhưng nó rất có thể sẽ gây ra nhiều vấn đề hơn vì bây giờ bạn sẽ ràng buộc các sự kiện trên mỗi bài đăng một phần gây ra việc thực hiện lặp lại các trình xử lý sự kiện trên một sự kiện duy nhất. Bạn có thể giải quyết một số vấn đề bằng cách gọi số unbind cho bộ chọn trước khi thực hiện bất kỳ ràng buộc nào. Đối với các ràng buộc sự kiện đơn giản, bạn có thể tiếp tục sử dụng $ (tài liệu) .đã có chức năng trực tiếp (thay vì nhấp chuột, di chuột, v.v.).

Tôi chưa sử dụng các plugin jQuery với UpdatePanel, vì vậy tôi không thể chắc chắn bạn cần làm gì, nhưng một khi bạn hiểu điều gì đang xảy ra, sẽ không khó để tìm ra cách tiếp cận đúng. Để tìm hiểu thêm về vấn đề này và các giải pháp khả thi, vui lòng đọc bài viết của $(document).ready() and pageLoad() are not the same! của Dave Ward (bài viết bao gồm một số ví dụ).

1

Tôi đề nghị bạn sử dụng một công cụ như Firebug, bằng cách sử dụng mà bạn có thể xác định nơi xảy ra lỗi. Bạn có thể theo dõi các yêu cầu ajax, để xem liệu nó có thực sự dừng yêu cầu hay không, nếu chúng thực hiện tất cả thông qua, và bạn nhận được phản hồi nào. Bạn cũng có thể sử dụng nó để gỡ lỗi javascript trong thời gian chạy và nó thường cung cấp cho bạn các thông báo lỗi mà bạn có thể chưa nhận thấy. Âm thanh như chỉ là công cụ bạn cần vào lúc này.

+0

Tôi chắc chắn sẽ thử Firebug và xem những gì tôi nhận được. Cảm ơn. – kntcnrg

Các vấn đề liên quan