可以更改JQueryUI自动完成的空间编码吗?

时间:2014-09-26 17:18:15

标签: jquery jquery-ui encoding jquery-ui-autocomplete

默认情况下,JQueryUI的自动完成功能会将空格编码为“+”。我的远程源要求编码为“%20”。是否可以改变空格的编码方式?

3 个答案:

答案 0 :(得分: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);
    });
}

答案 1 :(得分:0)

请在发出服务器请求之前尝试使用 encodeURIComponent(sample)

参考:http://nebsolutions.blogspot.in/2012/03/jquery-autocomplete-encoding-issue.html

答案 2 :(得分: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>