2014-09-26 4 views
1

По умолчанию автозаполнение JQueryUI будет кодировать пробелы как «+». Мой удаленный источник ожидает, что кодировка будет «% 20». Можно ли изменить порядок пробелов?Можно изменить пространственную кодировку для автозаполнения JQueryUI?

+0

Примером игры будет потрясающий. Не могли бы вы привести пример в http://jsfiddle.net –

+0

@ Vega: Не уверен, что он нужен, поскольку автозаполнение JQuery-UI по умолчанию кодирует пробелы как «+». –

+2

Если вы используете 'source:" http://example.com/ "', попробуйте сделать запрос на сервер вручную, используя 'source: function (request, successCallback) {$ .ajax (...). Done (successCallback); } '. – Regent

ответ

1

Идея заключается в том:

  • сделать автозаполнения запрос на сервер вручную с помощью $.ajax()
  • подготовить вручную посылать данные путем замены «» с «% 20»
  • предотвратить обработку переданных данных по умолчанию с помощью processData: false

Example fiddle.

<input id="test"> 

$('#test').autocomplete 
({ 
    source: autocompleteRequest 
}); 

function autocompleteRequest(request, response) 
{ 
    var inputString = request.term; 
    var preparedString = inputString.replace(/\s/g, "%20"); 
    $.ajax({ 
     url: "test/", 
     data: "str=" + preparedString, 
     processData: false 
    }).success(function(data) 
    { 
     response(data); 
    }); 
} 
0

Пожалуйста, попробуйте использовать encodeURIComponent (образец), прежде чем сделать запрос на сервер,

См: http://nebsolutions.blogspot.in/2012/03/jquery-autocomplete-encoding-issue.html

+1

Это заканчивается двойным кодированием вещей и «Michael Valentine» заканчивается как «Michael% 2520Valentine» –

0

Я не смог воспроизвести вашу проблему, но, как сказал ManoNamo, ваша проблема, вероятно, именно так, вы отправляете данные на свой сервер. И encodeURI, и encodeURIComponent будут соответствовать вашим целям. Ниже рабочего примера:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Autocomplete - Default functionality</title> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css"> 
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="http://code.jquery.com/ui/1.11.1/jquery-ui.js"></script> 
    <link rel="stylesheet" href="http://jqueryui.com/jquery-wp-content/themes/jqueryui.com/style.css"> 
    <script> 
    $(function() { 
    var availableTags = [ 
     "ActionScript KABAM", 
     "ActionScript", 
    ]; 
    $("#tags").autocomplete({ 
     source: availableTags, 
     change: function(event, ui) { 
     console.dir(encodeURIComponent(ui.item.value)); 
     console.dir(encodeURI($("input#tags").val())); 
     } 
    }); 
    }); 
    </script> 
</head> 
<body> 

<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 


</body> 
</html> 
+0

Это заканчивается двойным кодированием вещей и «Michael Valentine» заканчивается как « Майкл% 2520Valentine» –

Смежные вопросы