我有一个相当简单的脚本,旨在根据客户类型隐藏/取消隐藏各种表单字段。代码如下:
var customerTypeFields = [];
customerTypeFields['Individual'] = ['First Name(s)', 'Last Name', 'Date of Birth'];
customerTypeFields['Limited Company'] = ['Name', 'Company Number'];
customerTypeFields['Partnership'] = ['Name', 'Company Number'];
$('#customer-type-selector').chosen().change( function() {
var visibleFields = customerTypeFields[$(this).children("option[value='" + $(this).attr('value') + "']").text()];
console.log(visibleFields);
$.each(visibleFields, function(i, field) {
$('#customer-features').find('input[data-feature-type=' + field + ']').parent().parent().show();
});
});
这似乎在某种程度上有效,但在加载个人时出现了一个奇怪的错误,即:
Uncaught Error: Syntax error, unrecognized expression: input[data-feature-type=First (s)]
你会注意到First (s)
不在我的数组中,因此似乎正在删除单词Name
- 任何想法为什么会像这样编辑字符串?
谢谢!
答案 0 :(得分:1)
以双引号逃脱:
(...) .find('input[data-feature-type="' + field + '"]') (...)
有关jQuery's Attribute Equals Selector page的详情,请参阅。它基本上将其定义为:
jQuery('[attribute="value"]')