我正在尝试在选中复选框时更改文本框的文本,并在控制台上显示此错误
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');
}
});
});
答案 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