我有一个表单输入字段,其中一些输入字符串包含括号,例如:
ducks[quack]
请注意,这不是名称,类,类似的东西。这就是价值。
当我尝试使用jquery选择此值时,使用字段类和val(),它返回一个空对象。选择带有不带括号的字符串作为值的相同字段。
我无法修改包含括号的数据集,是否有某种方法可以让jquery为这些字符串字段提取值?
答案 0 :(得分:1)
以下方法使用attribute-equals表示法:
jQuery('#create_suborder').click(function (event) {
event.preventDefault();
var product = jQuery('#products').val(),
product_id = jQuery('input[id="product_id_' + product + '"]').val(),
total_units = jQuery('input[id="total_units_' + product + '"]').val();
console.log(product, product_id, total_units);
jQuery('#result').html(product_id + ', ' + total_units);
});
虽然使用CSS表示法:#product_id_' + product
没有;我假设这是因为需要在CSS中转义[
和]
,这应该是反斜杠,然后是相关字符的unicode字符点。这与attribute-equals方法形成对比,后者查找元素,然后遍历提供给选择器的字符串值的named属性。
经过一些修订后,以下工作:
jQuery('#create_suborder').click(function (event) {
event.preventDefault();
var product = jQuery('#products').val().replace(/\[|\]/g, function(a){
return '\\' + a.charCodeAt(0).toString(16) + ' ';
}),
product_id = jQuery('#product_id_' + product).val(),
total_units = jQuery('#total_units_' + product).val();
jQuery('#result').html(product_id + ', ' + total_units);
});
这将检索select
元素的值,然后使用[
方法的匿名函数替换任何(和所有)]
和replace()
个字符。在此函数中a
是找到的字符。
我们返回以两个\\
个字符开头的字符串(因为\
是一个转义字符,我们想要文字\
,我们必须逃避转义);我们用找到的字符(a.charCodeAt()
)的字符代码连接起来,因为CSS要求Unicode字符点采用十六进制格式,我们使用toString(16)
来转换十进制Unicode({ {1}}和91
)为十六进制格式(93
和5b
);然后我们也附加一个空格,以便分隔/结束转义的字符序列。
参考文献: