JavaScript和(&;)运算符给出非法字符错误,然后是另一个错误

JavaScript和(&;)运算符给出非法字符错误,然后是另一个错误,javascript,wordpress,tinymce,Javascript,Wordpress,Tinymce,我正在构建一个代码块,遇到了一个让我好奇的问题,为什么ampersands不会从WordPress文本编辑器视图进行编码。此代码按预期工作,通过文本编辑器将其直接嵌入页面时,会为我提供所需的警报: // This code works as expected <script> jQuery(document).ready(function() { if (jQuery('select[name=idx-q-PropertyTypes]:first').val()=='') {

我正在构建一个代码块,遇到了一个让我好奇的问题,为什么ampersands不会从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>
//此代码按预期工作
jQuery(文档).ready(函数(){
if(jQuery('select[name=idx-q-PropertyTypes]:first').val()=''{alert('it exists');}else{alert('not find');}
jQuery('.dsidx resp area submit input')。单击(函数(e){
警报(“你点击了它”);
if(jQuery('select[name=idx-q-PropertyTypes]:first')。val()=''){
警报('没有搜索参数');
e、 预防默认值();
}
});
});
我想做的下一件事是检查条件的并发性。因此,我将代码更改为:

// 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>
//此代码给出错误
jQuery(文档).ready(函数(){
if(jQuery('select[name=idx-q-PropertyTypes]:first').val()=''{alert('it exists');}else{alert('not find');}
jQuery('.dsidx resp area submit input')。单击(函数(e){
警报(“你点击了它”);
如果(
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-bedmin]:first')。val()&&
jQuery('select[name=idx-q-BathsMin]:first')。val()&&
jQuery('input[name=idx-q-ImprovedSqFtMin]:first')。val()
) {
警报('没有搜索参数');
e、 预防默认值();
}
});
});
一开始我犯的错误是我使用了非法字符。当我在调试器中查找位置时,它是双安培数。它们显示为
和#038。因此,接下来我尝试用
&;替换所有代码,这不起作用。在这样替换它们之后,我得到了一个新的错误,即条件语句缺少右括号。为了解决这个问题,我尝试在末尾添加一个括号,将每个条件用一组括号括起来,然后将整个条件写在一行上,每个条件依次写,但没有一个条件起作用。我还按照建议把它插到小提琴上,但也没用。在这样替换它们之后,我得到了一个新的错误,即条件语句缺少右括号。为了解决这个问题,我尝试在末尾添加一个括号,将每个条件用一组括号括起来,然后将整个条件写在一行上,每个条件依次写,但没有一个条件起作用


当我作为外部文件链接到脚本时,符号会正确编码,整个脚本都会工作。有人知道为什么会这样吗?如果我想像最初尝试的那样嵌入脚本,是否有办法解决这个问题?

因此您需要在CDATA中插入脚本,但如果您不想,如果不想更改代码,请执行此操作

var val=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();
if (val=="") ...
备选方案:

var isEmpty = $('[name^=idx-q]:first')
            .filter(
              function() { 
                return $(this).val() != ""; 
              }
            )
            .length==0;

该文本编辑器可能正在将
&
编码为
&。它是否有“原始文本”设置?如果是XHTML,则需要使用
转义字符(&C)&.chRyNan,我不明白吗?我尝试这样做的方式是否不正确(只需将每个
&
替换为
&
)?Cerburs,文本编辑器是TinyMCE的标准WordPress安装。我总是以我所知道的最干净的方式运行它,即选择“文本”选项卡而不是“视觉”选项卡。如果文本编辑器不允许您在JavaScript中包含
&
字符,那么这是一个错误的工具。我也尝试了CDATA标记,但它们不起作用。不过,我喜欢你提出的这个解决方案。这对于用例来说肯定是可行的。