JavaScript编码字段,而不会破坏显示

JavaScript encode field without spoiling the display

本文关键字:显示 编码 字段 JavaScript      更新时间:2023-09-26

在作为$_GET请求提交之前,我想对特定的搜索字段进行编码。我正在做的是在表单提交之前将encodeURIComponent()函数应用于该字段

$('#frmMainSearch').submit(function() {
    var field = $(this).find('#searchinput');
    field.val(encodeURIComponent(field.val()));
});

问题是,一旦对文本进行了编码,字段就会显示编码后的文本,这看起来有点奇怪。我能做些什么来避免它吗?

示例:我键入你好&你好。当我单击提交按钮时,在刷新页面之前,它会变成类似于Hello%26 Hello的内容。我想避免这种情况。

有什么解决方案吗?

感谢

我最近不得不解决同样的问题。我是这样做的:

  1. 创建要面向用户的输入字段,例如:

    <input class="really-nice-looking-field" 
           id="search-text-display" 
           placeholder="Search for stuff..." 
           type="text">
    
  2. 请注意,对于显示的字段,name属性被特别省略。这将使search-text-display字段不在提交的表单中,这样就不会有未使用的参数通过。

  3. 创建一个隐藏字段,这就是实际用于提交的字段,如下所示:

    <input id="search-text" name="search_text" type="hidden">
    
  4. 在提交表单之前,从表单中捕获提交事件以填充隐藏字段,如下所示:

    $('#site-search').submit(function() {
        $('#search-text').val(
            encodeURIComponent($('#search-text-display').val())
        );
    });
    

这将使显示给用户的输入字段保持不变,而您的参数则根据需要进行转义:

    Parameters: {"utf8"=>"✓", "search_text"=>"hello%20%26%20hello"}