2014-06-20 5 views
3

아약스를 통해 새 항목을 제출하고 항목 데이터를 반환하는 양식이 있습니다. 나는 반환 된 데이터가 Select2 필드에서 자동으로 선택되도록하려고 노력 중입니다. 입력 값으로 입력 된 ID를 얻을 수는 있지만 텍스트를 스팬에 표시하는 방법을 모르겠습니다.jQuery Select2 - 아약스 제출 값 선택

가 여기에 지금까지 가지고있는 JS : 당신이 볼 수 있듯이, 표시되는 텍스트처럼되고

function clientFormatResult(client){ 
    var markup = client.first_name + ' ' + client.last_name + ' (' + client.username + ')'; 
    return markup; 
} 

function clientFormatSelection(client) { 
    $('#client-input').empty(); 
    $('#client-input').append('<input type="hidden" name="client" value="' + client.id + '" />'); 
    return client.first_name + ' ' + client.last_name + ' (' + client.username + ')'; 
} 

$('#client-selection').select2({ 
    placeholder: 'Select a client', 
    allowClear: true, 
    minimumInputLength: 1, 
    ajax: { 
     type: 'POST', 
     url: 'clients/get_client_list', 
     dataType: 'json', 
     data: function (term) { 
      return {filter: term}; 
     }, 
     results: function (data) { 
      return {results: data}; 
     } 
    }, 
    formatResult: clientFormatResult, 
    formatSelection: clientFormatSelection, 
    dropdownCssClass: 'bigdrop', 
    initSelection: function (element, callback) { 
     var id = element.val(); 
     if(id != '') { 
      $.ajax('clients/get_client_list/'+id).done(function(data) { 
       data = $.parseJSON(data); 
       callback(data); 
      }); 
     } 
    } 
}); 

$('#add-client-form').submit(function(e) { 
    e.preventDefault(); 
    var form = $(this), 
     url = form.attr('action'), 
     data = form.serialize(); 
    $.post(url, data, function(data, status, xhr) { 
     $('.form-response').fadeOut(400); 
     if(status == 'success') { 
      $('#add-client-modal').modal('hide'); 
      data = $.parseJSON(data); 
      $('#client-selection').select2('val', data.client_id); 
     } else { 
      $('#add-client-failure').fadeIn(400); 
     } 
    }); 
}); 

을 의미한다 "존 스미스 (SmithJ와)".

답변

0

나는 그것을 분류했다. 그것은 내가 되찾고 있던 자료의 문제였다. Select2는 id 변수를 예상했지만 client_id으로 반환했습니다.