Javascript 当字符串使用双引号时,无法设置val

Javascript 当字符串使用双引号时,无法设置val,javascript,jquery,double-quotes,Javascript,Jquery,Double Quotes,我有以下变量- termText = $("#termBox").val(); 其中,$(“#termBox”).val()等于-“Test\” 然后我创建了一个html对象,并希望将其值设置为termText like- <input type="text" id="secondBox" value="' + termText + '"> 然而,这是行不通的。奇怪的是当$(“#termBox”).val()中没有双引号,即“Test”(在javascript调试器中,添加引

我有以下变量-

termText = $("#termBox").val();
其中,
$(“#termBox”).val()
等于-
“Test\”

然后我创建了一个html对象,并希望将其值设置为termText like-

<input type="text" id="secondBox" value="' + termText + '">

然而,这是行不通的。奇怪的是当
$(“#termBox”).val()
中没有双引号,即
“Test”
(在javascript调试器中,添加引号以显示它是一个字符串)时,这可以很好地工作并完美地填充
secondBox

我不想从字符串中转义双引号,因为它们是必需的,因为在用户输入
“Term”
Term
之间必须有一个定义,但是这不适用于双引号


我怎样才能做到这一点?

在创建输入时,必须使用html等价物对其进行转义

<input type="text" id="secondBox" value="' + termText.replace(/\"/g,"&quot;") + '">

我不确定您为什么允许用户输入分隔符,而是使用
.val()
设置值:

var input = $('<input type="text" id="secondBox"/>').val(termText);
var输入=$('').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="&quot;Test&quot;">
“测试”

您不应允许用户输入双引号、单引号或反斜杠。它们是您应该清除表单用户输入字段中的一些危险字符。如果你需要后面的引语,你应该在幕后添加它们。您将面临跨站点脚本(XSS)攻击

你可以通过用户输入来实现你想要做的事情;清除危险人物;它们只是将其传递给新输入的值。正如Truebluaussie提到的。稍加修改

var termText = $("#termBox").val();
var input = $('#secoundBox').val(termText);

您可以使用引号以外的其他内容。引号是必需的,如果用户在字符串周围输入双引号,则它们必须出现在第二个框val中,如前所述。我理解需要使用引号来指示某些内容,我的意思是,既然您有此问题,您可以使用其他指示器吗?我不确定
value=”“term”“
是否有效这里是防止SXX攻击的最佳参考之一。