Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的转义撇号_Javascript - Fatal编程技术网

javascript中的转义撇号

javascript中的转义撇号,javascript,Javascript,我对自动完成搜索字段有问题。在搜索中使用撇号之前,一切都很顺利。目前,var名称和相应的数据库名称都有空格,而不是撇号,因此这些名称可以工作 我知道我需要避开撇号(\'),并在var列表中尝试了这个方法,但它不起作用,因为我猜它需要在javascript代码中清理(就像它一样),但我不知道如何或在哪里清理 代码如下(很抱歉,太多了),如有任何帮助,将不胜感激: 功能自动完成(inp、arr){ /*autocomplete函数接受两个参数, 文本字段元素和可能的自动完成值数组:*/ 无功电流聚

我对自动完成搜索字段有问题。在搜索中使用撇号之前,一切都很顺利。目前,var名称和相应的数据库名称都有空格,而不是撇号,因此这些名称可以工作

我知道我需要避开撇号(\'),并在var列表中尝试了这个方法,但它不起作用,因为我猜它需要在javascript代码中清理(就像它一样),但我不知道如何或在哪里清理

代码如下(很抱歉,太多了),如有任何帮助,将不胜感激:

功能自动完成(inp、arr){
/*autocomplete函数接受两个参数,
文本字段元素和可能的自动完成值数组:*/
无功电流聚焦;
/*当有人在文本字段中写入时执行函数:*/
inp.addEventListener(“输入”,函数(e){
var a,b,i,val=该值;
/*关闭所有已打开的自动完成值列表*/
closeAllList();
如果(!val){返回false;}
currentFocus=-1;
/*创建将包含以下项(值)的DIV元素:*/
a=document.createElement(“DIV”);
a、 setAttribute(“id”,this.id+“自动完成列表”);
a、 setAttribute(“类”、“自动完成项”);
/*将DIV元素作为自动完成容器的子元素追加:*/
this.parentNode.appendChild(a);
/*对于数组中的每个项*/
对于(i=0;i”+arr[i].substr(0,val.length)+“”;
b、 innerHTML+=arr[i].substr(val.length);
/*插入将保存当前数组项值的输入字段:*/
b、 innerHTML+=“”;
/*当有人单击项值(DIV元素)时执行函数:*/
b、 addEventListener(“单击”,函数(e){
/*插入自动完成文本字段的值:*/
inp.value=this.getElementsByTagName(“输入”)[0].value;
/*关闭自动完成值的列表,
(或任何其他打开的自动完成值列表:*/
closeAllList();
});
a、 儿童(b);
}
}
});
/*按键盘上的键执行功能:*/
inp.addEventListener(“向下键控”,函数(e){
var x=document.getElementById(this.id+“自动完成列表”);
如果(x)x=x.getElementsByTagName(“div”);
如果(e.keyCode==40){
/*如果按下向下箭头键,
增加currentFocus变量:*/
currentFocus++;
/*并使当前项目更加可见:*/
addActive(x);
}如果(e.keyCode==38){//up
/*如果按下向上箭头键,
减小currentFocus变量:*/
当前焦点--;
/*并使当前项目更加可见:*/
addActive(x);
}否则如果(e.keyCode==13){
/*如果按ENTER键,则阻止提交表单*/
e、 预防默认值();
如果(当前焦点>-1){
/*并模拟单击“活动”项:*/
如果(x)x[currentFocus]。单击();
}
}
});
函数addActive(x){
/*将项目分类为“活动”的函数:*/
如果(!x)返回false;
/*首先删除所有项目上的“活动”类:*/
清除活性(x);
如果(currentFocus>=x.length)currentFocus=0;
如果(currentFocus<0)currentFocus=(x.length-1);
/*添加类“自动完成活动”:*/
x[currentFocus].classList.add(“自动完成活动”);
}
函数removeActive(x){
/*从所有自动完成项中删除“活动”类的函数:*/
对于(变量i=0;i

您的问题是在html端转义,而不是在JavaScript中转义

变为:

<input type='hidden' value='Bouton d'Or'>
但在这两种情况下,属性的值都将在
之前的
'
处结束,因为
\
在html中不用于转义

html中
'
的正确转义是
';

 "<input type='hidden' value='" + arr[i].replace(/'/g,'&#x27;') + "'>"

“您的问题到底是什么?发生了什么和应该发生什么?您在哪一行收到错误,如果有?它说了什么?看起来您需要对撇号进行HTML转义,而不仅仅是JS转义,因为您正在将它连接到HTML字符串,因此
b.innerHTML+=”这可能会让你更容易些。为了回应@benvc:
`Bouton d'或`
是否有javascript函数可以自动转义该值?@GarrettMotzner没有,我在询问该主题的问题中添加了一个链接。
 "<input type='hidden' value='" + arr[i].replace(/'/g,'&#x27;') + "'>"
<input type='hidden' value='Bouton d&#x27;Or'>