9

Tôi đang sử dụng tính năng tự động hoàn thành jQuery và hoạt động tốt của nó, bây giờ tôi muốn lưu một biến trong phiên từ jQuery khi tình trạng sau xảy ra.Tự động hoàn tất Jquery trên sự kiện được chọn

Khi ai đó nhập bất kỳ từ nào, jQuery sẽ hiển thị trình đơn thả xuống đề xuất, nếu ai đó chọn một mục từ menu thả xuống đề xuất đó.

Tôi muốn nắm bắt điểm trên và lưu trữ biến trong phiên.

Tôi đã tìm kiếm trên Google, StackOverflow nhưng không tìm thấy giải pháp có liên quan. Mã của tôi cho autocomplete là sau đây:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true 
}); 

và đây là những gì tôi đã cố gắng để làm:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (a, b) { 
     alert("selected"); 
    } 

}); 

EDIT: handler Chọn sự kiện cũng không hoạt động

Tôi đang sử dụng asp. net MVC3 với C#. Xin hãy giúp tôi và cảm ơn trước.

+0

kiểm tra bảng điều khiển lỗi nội dung nó nói ...? –

+0

không có gì hiển thị trong bảng điều khiển @Anant –

+0

@smartboy Thư viện jquery bạn sử dụng là gì ?? –

Trả lời

15

Vì vậy, nếu tôi hiểu đúng bạn muốn để lưu trữ các giá trị được chọn trong một phiên biến

bạn có thể nhận được giá trị ra khỏi mục được chọn thông qua đoạn mã sau:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
minChars: 1, 
width: 402, 
matchContains: "word", 
autoFill: true, 
select: function (event, ui) { 
    var label = ui.item.label; 
    var value = ui.item.value; 
    //store in session 
    document.valueSelectedForAutocomplete = value 
} 
}); 

giá trị và nhãn được đối tượng json đến từ máy chủ

Hy vọng điều này sẽ giúp

+1

Chọn sự kiện không hoạt động như tôi đã nói với bạn trong câu hỏi của tôi và tôi đã thử lại lần nữa nhưng không thành công –

+1

Tại sao trình xử lý chọn không hoạt động ??? –

1

Vâng, nếu bạn muốn lưu trữ trong phiên sử dụng asp.net mvc3 thì hãy làm sau

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (event, ui) { //must be cleared with function parameter 
     //alert(ui.item.label); //will show you the selected item 

     $.ajax({ 
      type: 'POST', 
      url: '/Controller/Action1', //whatever any url 
      data: {label: ui.item.label}, 
      success: function(message) { if(message.data == true) ... else ... }, 
      dataType: 'json' 
     }); 

    } 

}); 

và điều khiển

[HttpPost] 
    public JsonResult Action1(string label) { 

    this.Session["AnyValue"] = label; 

    return Json(new { 
     data = true 
    }, JsonRequestBehavior.AllowGet); 
    } 
+0

Đừng nghĩ rằng bạn cần cài đặt JsonRequestBehavior.AllowGet vì điều này được lọc như HTTPPOST –

+0

Là tùy chọn (JsonRequestBehavior.AllowGet) –

-2

tiêu đề câu hỏi của bạn có vẻ nhàm chán nhưng bởi mô tả Tôi hiểu câu hỏi của bạn. Bây giờ hãy ghi nhớ những điểm này:

  1. phiên có trên máy chủ.
  2. sự kiện nhấp ở phía khách hàng.

Bây giờ bạn cần phải gửi thông báo từ phía máy khách đến máy chủ về cùng. Điều này có thể đạt được thông qua ajax theo cách sau:

  1. ràng buộc ".autosearch-thông minh" để Click() và bên trong nhấp chuột làm ajax() yêu cầu một URL cụ thể trên trang web của bạn với một tham số được gắn thẻ của nhấp = đúng ví dụ: yoursite.com/sessionsettercontroller?clicked=true

  2. trên phía máy chủ trong sessionsettercontroller kiểm tra cho đã nhấp = true và sau đó đặt biến thành SESSION.

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