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,""") + '">
我不确定您为什么允许用户输入分隔符,而是使用
.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=""Test"">
“测试”
您不应允许用户输入双引号、单引号或反斜杠。它们是您应该清除表单用户输入字段中的一些危险字符。如果你需要后面的引语,你应该在幕后添加它们。您将面临跨站点脚本(XSS)攻击
你可以通过用户输入来实现你想要做的事情;清除危险人物;它们只是将其传递给新输入的值。正如Truebluaussie提到的。稍加修改
var termText = $("#termBox").val();
var input = $('#secoundBox').val(termText);
您可以使用引号以外的其他内容。引号是必需的,如果用户在字符串周围输入双引号,则它们必须出现在第二个框val中,如前所述。我理解需要使用引号来指示某些内容,我的意思是,既然您有此问题,您可以使用其他指示器吗?我不确定
value=”“term”“
是否有效这里是防止SXX攻击的最佳参考之一。