双引号中的字符串无法设置值
Cannot set val when string in double quotes
我有以下变量 -
termText = $("#termBox").val();
其中 $("#termBox").val()
等于 - "\"Test\""
然后我正在创建一个 html 对象,并希望将其值设置为 termText,例如 -
<input type="text" id="secondBox" value="' + termText + '">
但是这不起作用。奇怪的是,当 $("#termBox").val()
中没有双引号时,即 "Test"
(在 javascript 中,调试器添加引号以显示它是一个字符串),这工作正常并填充 secondBox
值完美。
我不想从字符串中转义双引号,因为它们是必需的,因为在用户输入 "Term"
或 Term
之间必须有一个定义,但这不适用于双引号.
我该怎么做?
创建输入时,您必须使用 html 等价物对其进行转义。
<input type="text" id="secondBox" value="' + termText.replace(/\"/g,""") + '">
我不确定您为什么允许用户输入定界符,而是使用 .val()
设置值:
var input = $('<input type="text" id="secondBox"/>').val(termText);
这样 jQuery 会处理任何所需的分隔。
转义引号将在访问值时产生原始引号。
控制台:
var termText = "\"Test\"";
var input = document.createElement('input');
input.setAttribute('value', termText);
console.log(input.value);
console.log(input.outerHTML);
输出:
"Test"
<input value=""Test"">
您不应允许您的用户输入双引号、单引号或反斜杠。它们是您应该从用户输入字段中删除的一些危险字符。如果你需要后面的引语,你应该在幕后添加它们来支持你自己。您将面临跨站脚本 (XSS) 攻击。
您可以通过获取用户输入来实现您想要做的事情;清除危险字符;他们只是将其传递给新输入的值。正如 TrueBlueAussie 提到的那样。稍微修改一下。
var termText = $("#termBox").val();
var input = $('#secoundBox').val(termText);
我有以下变量 -
termText = $("#termBox").val();
其中 $("#termBox").val()
等于 - "\"Test\""
然后我正在创建一个 html 对象,并希望将其值设置为 termText,例如 -
<input type="text" id="secondBox" value="' + termText + '">
但是这不起作用。奇怪的是,当 $("#termBox").val()
中没有双引号时,即 "Test"
(在 javascript 中,调试器添加引号以显示它是一个字符串),这工作正常并填充 secondBox
值完美。
我不想从字符串中转义双引号,因为它们是必需的,因为在用户输入 "Term"
或 Term
之间必须有一个定义,但这不适用于双引号.
我该怎么做?
创建输入时,您必须使用 html 等价物对其进行转义。
<input type="text" id="secondBox" value="' + termText.replace(/\"/g,""") + '">
我不确定您为什么允许用户输入定界符,而是使用 .val()
设置值:
var input = $('<input type="text" id="secondBox"/>').val(termText);
这样 jQuery 会处理任何所需的分隔。
转义引号将在访问值时产生原始引号。
控制台:
var termText = "\"Test\"";
var input = document.createElement('input');
input.setAttribute('value', termText);
console.log(input.value);
console.log(input.outerHTML);
输出:
"Test"
<input value=""Test"">
您不应允许您的用户输入双引号、单引号或反斜杠。它们是您应该从用户输入字段中删除的一些危险字符。如果你需要后面的引语,你应该在幕后添加它们来支持你自己。您将面临跨站脚本 (XSS) 攻击。
您可以通过获取用户输入来实现您想要做的事情;清除危险字符;他们只是将其传递给新输入的值。正如 TrueBlueAussie 提到的那样。稍微修改一下。
var termText = $("#termBox").val();
var input = $('#secoundBox').val(termText);