【问题标题】:Dynamic input name with double quotes issue带双引号的动态输入名称问题
【发布时间】:2015-07-23 00:28:09
【问题描述】:

场景:<div> 文本有双引号。追加动态输入并警告输入值的 JQuery 方法不起作用。我知道转义引号时会触发此问题。有人可以查看代码吗?

var divText = $("div").text();
$('form:not(:has([name="' + divText + '"]))').append($('<input>', {
  type: 'text',
  value: divText,
  name: divText
}));
alert($('[name="' + divText + '"]').val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>"</div>
<form>

</form>

我在这里创建了一些demo

【问题讨论】:

  • 你真的应该把代码放在问题中。
  • 你将不得不逃避它,你会遇到更多问题learn.jquery.com/using-jquery-core/faq/…
  • @epascarello 我试过$("div").text().replace(/"/g,'\"') 但没有用
  • 你需要转义斜线试试'\\"'
  • 转义不会有帮助,可能会起作用,但它不是应该的,您将输入元素的名称属性设置为 div 内的文本,名称,id 等属性不应有任何空格或特殊其中的人物。在那里改变你的逻辑..

标签: javascript jquery html escaping


【解决方案1】:

如果你必须使用双引号,你可以像这样删除它们:

var divText = $("div").text().replace(/"/g, '');

Fiddle

【讨论】:

  • 我不想用任何东西替换任何字符,div text 也应该是输入的名称,不管它有什么。
【解决方案2】:

播放 jQuery 文档中的 reg exp

var divText = $("div").text();
var name = divText.replace(/("|:|\.|\[|\]|,)/g, "\\$1");
$('form:not(:has([name="' + name + '"]))').append($('<input>', {
  type: 'text',
  value: divText,
  name: divText
}));
alert($('[name="' + divText + '"]').val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>"</div>
<form>

</form>

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多