【问题标题】:append item to select box with jquery while escaping quotes在转义引号时将项目附加到带有jquery的选择框
【发布时间】:2011-07-11 18:54:05
【问题描述】:

我正在向选择框添加选项,如下所示:

x.append("<option value="+option_to_add+">"+option_to_add+"</option>");

其中“option_to_add”可以是用户输入的任何值。 当然,添加包含单引号或双引号的选项时会出现问题。

有没有办法在将这些值附加到选择列表之前正确转义它们

例如这将是一个问题

用户类型:he"llo 我的代码将尝试将其附加为:&lt;option value="he"llo"/&gt; 这会使 html/js 崩溃

【问题讨论】:

  • escape(option_to_add); 我应该认为应该可以工作
  • @Val: escape 并没有做你认为它在 JavaScript 中所做的事情。你一定在考虑 PHP。
  • @mathias 它确实对值进行了编码,您可以在服务器端对其进行解码

标签: javascript jquery jquery-ui escaping quotes


【解决方案1】:

我找到了一种正确处理此问题的原生 jQuery 方法:

.append($("<option></option>").attr("value",option_to_add).text(option_to_add));

【讨论】:

  • +1 是的! jQuery 的 .text() 是一种易于使用的 UTF-8 安全方式,在从表单字段读取和写入转义值时不会与 Unicode 字符混淆。
【解决方案2】:

您需要转义 " 字符,如下所示:\"

这可以自动化如下:

'foo"bar"baz'.replace(/"/g, '\\"'); // 'foo\"bar\"baz'

您只需对&lt;option&gt; 元素的value 属性执行此操作,因此完整的代码 sn-p 将是:

x.append('<option value="' + option_to_add.replace(/"/g, '\\"') + '">' + option_to_add + '</option>');

【讨论】:

    【解决方案3】:

    您可以使用 Javascript 替换功能来转义或删除引号... http://www.w3schools.com/jsref/jsref_replace.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 2016-11-19
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多