【发布时间】:2015-05-02 16:04:42
【问题描述】:
我正在构建一个代码块并遇到了一个问题,这让我很好奇为什么 & 符号不会从 WordPress 文本编辑器视图中编码。此代码按预期工作,当它通过文本编辑器直接嵌入页面时,为我提供了我正在寻找的警报:
// This code works as expected
<script>
jQuery(document).ready(function() {
if (jQuery('select[name=idx-q-PropertyTypes]:first').val()=='') {alert ('it exists');} else {alert ('cant find it');}
jQuery('.dsidx-resp-area-submit input').click(function(e){
alert ("you clicked it");
if (jQuery('select[name=idx-q-PropertyTypes]:first').val()=='') {
alert ('There were no search parameters.');
e.preventDefault();
}
});
});
</script>
接下来我想做的是检查条件的并发性。所以我把代码改成这样:
// This code gives errors
<script>
jQuery(document).ready(function() {
if (jQuery('select[name=idx-q-PropertyTypes]:first').val()=='') {alert ('it exists');} else {alert ('cant find it');}
jQuery('.dsidx-resp-area-submit input').click(function(e){
alert ("you clicked it");
if (
jQuery('select[name=idx-q-PropertyTypes]:first').val()=='' &&
jQuery('select[name=idx-q-Cities]:first').val()=='' &&
jQuery('input[name=idx-q-PriceMin]:first').val()=='' &&
jQuery('input[name=idx-q-PriceMax]:first').val()=='' &&
jQuery('select[name=idx-q-BedsMin]:first').val()=='' &&
jQuery('select[name=idx-q-BathsMin]:first').val()=='' &&
jQuery('input[name=idx-q-ImprovedSqFtMin]:first').val()==''
) {
alert ('There were no search parameters.');
e.preventDefault();
}
});
});
</script>
我最初得到的错误是我使用了非法字符。当我在调试器中查找时,它是双&符号。他们显示为&#038;。所以,接下来我尝试将它们全部替换为&amp;,但没有奏效。像这样替换它们之后,我收到一个新错误,说条件语句缺少右括号。为了解决这个问题,我尝试在末尾添加一个括号,将每个条件括在一组括号中,然后将整个条件写在一行上,每个条件依次写,但没有一个有效。我还按照this question 的建议将其插入小提琴,但这也不起作用。像这样替换它们之后,我收到一个新错误,说条件语句缺少右括号。为了解决这个问题,我尝试在末尾添加一个括号,将每个条件括在一组括号中,然后将整个条件写在一行上,依次写下,但都不起作用。
当我作为外部文件链接到脚本时,& 符号正确编码并且整个脚本工作。有谁知道为什么会这样,如果我想像我最初尝试的那样嵌入脚本,是否有任何方法可以解决这个问题?
【问题讨论】:
-
该文本编辑器可能会将
&amp;编码为&#038;。它有“原始文本”设置吗? -
如果是 XHTML,您需要使用
&amp;转义 & 字符。 -
chRyNan,我不明白什么吗?我尝试这样做的方式是否不正确(只需将每个
&amp;替换为&amp;)? -
Cerbrus,该文本编辑器是 TinyMCE 的标准 WordPress 安装。我总是以我知道的最简洁的方式运行它,即选择“文本”选项卡而不是“视觉”选项卡。
-
如果文本编辑器不允许您在 JavaScript 中包含
&amp;字符,那么它就是不适合这项工作的工具。
标签: javascript wordpress tinymce