JavaScript的编码字段不损坏显示(JavaScript encode field witho

2019-10-18 12:40发布

我想提交的$ _GET请求之前编码特定的搜索领域。 我做的是在这一领域的应用encodeURIComponent方法()函数提交表单前

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

问题是,一旦文本编码,该字段显示编码文本看起来有点怪。 有什么我可以做才能避免呢?

例如:I型你好你好&。 当我点击提交按钮会变成像喂26%您好页面之前被刷新。 我想避免这种情况。

任何解决方案?

谢谢

Answer 1:

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

  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"}


文章来源: JavaScript encode field without spoiling the display