2013-09-07 41 views
7

Tôi đang sử dụng thư viện jquery 1.8.2 và jqueryui 1.9.0.Giá trị thiết lập hộp văn bản tự động hoàn thành jquery lập trình

Tôi đang cố gắng thêm hộp thoại "Chỉnh sửa bản ghi" vào bảng của tôi chứa hộp văn bản tự động hoàn thành của jquery-ui.

Tôi cũng đang sử dụng sự kiện thay đổi tự động hoàn thành để hạn chế người dùng chọn các mục từ danh sách đã cho.

Vấn đề của tôi là: khi tôi hiển thị biểu mẫu chỉnh sửa, tôi đang đặt dữ liệu hiện có vào hộp văn bản, tuy nhiên khi người dùng nhấp vào trường khác trong biểu mẫu chỉnh sửa, trình điều khiển thay đổi sẽ xuất hiện lỗi không có gì thay đổi. Tôi đã tìm thấy nhiều mẫu cho thấy làm thế nào để thiết lập giá trị cho loại combobox autocomplete nhưng tôi không thể tìm thấy một cho loại hộp văn bản. Xin hãy giúp tôi về vấn đề này, tôi tin rằng câu trả lời của bạn cũng sẽ hữu ích cho những người dùng khác.

đây là mã của tôi cho autocomplete textbox:

$("#EditMaterialName").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       type: "POST", 
       url: "someurl", 
       dataType: "json", 
       data: { 
        search_string: request.term 
       }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { 
          label: item.description, 
          value: item.description 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function (event, ui) { 

     }, 
     change: function (event, ui) { 
      if (!ui.item) { 
       $('<div class="error"><b> please select a listed value.</b><div>').insertAfter('#EditMatName'); 
       $('#EditMaterialName').val(''); 
      } 
     }, 
     open: function() { 
      $(this).removeClass('ui-corner-all').addClass('ui-corner-top'); 

     }, 
     close: function() { 
      $(this).removeClass('ui-corner-top').addClass('ui-corner-all'); 

     } 
    }); 

và đây là mã cho thấy Sửa Ghi thoại:

$('a.edit_link').live("click", function() { 

     clearEditMaterialForm(); 

     //loading selected value 
     var valMaterialName = $(this).closest('tr').children('td.cl_material_name').text(); 

     $('#EditMaterialName').val(valMaterialName); 

    }); 

cảm ơn bạn rất nhiều vì câu trả lời của bạn.

Trả lời

9

Nó không đẹp, có thể nó không đúng nhưng nó làm việc:

function setAutocompletCurrentValue(id, value) { 
    $(id).val(value); 
    var textToShow = $(id).find(":selected").text(); 
    $(id).parent().find("span").find("input").val(textToShow); 
} 

Hy vọng nó giúp.

+0

Thật thú vị và hoạt động tốt, Thực sự cảm ơn dude ... – Ali

+0

Hoàn hảo. Hoạt động tuyệt vời. –

+0

Cảm ơn tuyệt vời đã bắt đầu kéo tóc của tôi ra, điều này vẫn hoạt động. – jared