SyntaxError:期望表达式,得到'。' jQuery的

时间:2015-02-24 11:17:46

标签: javascript jquery

我正在尝试在选中复选框时更改文本框的文本,并在控制台上显示此错误

  

SyntaxError:期望表达式,得到'。'

它可能非常简单,但我无法弄明白

HTML

<input type="checkbox" name="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain" id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain">

<input id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLeadForAccount" type="text" value="Company" size="20" name="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLeadForAccount" maxlength="80">

的Javascript

    $(document).ready(function () {

   $('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain').change(function() {
       if ('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain').is(':checked')) {
         $('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLead').val('Website_Domain__c');
       }
       else{
         $('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLead').val('Company');
       }
    });

});

JSFiddle

3 个答案:

答案 0 :(得分:3)

除了$(条件中缺少if之外,您在id中使用的字符(冒号)对CSS中的简单ID选择器无效(例如,#xxx类型); details。 jQuery 可能让你逃脱它(虽然我会相当惊讶),但它是无效的,因此可以在任何点发布中改变。

您可以使用属性选择器:

$("[id=pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain]")...

......或逃避所有那些冒号。

此外,您可以在this.checked处理程序中使用change,使用条件运算符而不是if/else

$(document).ready(function () {
    $('[id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain"]').change(function() {
        $('[id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLead"]').val(
            this.checked ? 'Website_Domain__c' : 'Company'
        );
    });
});

实时复制:

$(document).ready(function () {
    $('[id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain"]').change(function() {
        $('[id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLead"]').val(
            this.checked ? 'Website_Domain__c' : 'Company'
        );
    });
});
<label>
  <input type="checkbox" id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain"> The checkbox
</label>
<br>
The input: <input type="text" id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:icConvMatchFieldInLead">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 1 :(得分:1)

您的代码中有两个问题:

1)您需要在构建选择器时转义特殊字符

2)if条件中缺少jquery选择器。

您也可以缩小代码范围以使用$(this)来使用当前点击的对象的上下文

 $('[id="pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain"]').change(function() {
   if( $(this).is(':checked')) {
     $(this).next().val('Website_Domain__c');
   }
   else{
    $(this).next().val('Company');
   }
});

<强> Working Demo

答案 2 :(得分:0)

if ('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain').is(':checked'))

是你的问题,应该是

if ($('#pgManageCS:frmManageCS:pbSettings:pbsDupeMatch:pbsiDupeMatch:chkwebsiteDomain').is(':checked'))

我建议您使用像JSHint

这样的linter