我有一个表单输入字段,其中一些输入字符串包含括号,例如:
ducks[quack]
请注意,这不是名称、类或类似的东西。这就是价值。
当我尝试使用 jquery 选择此值时,使用字段类和 val(),它返回一个空对象。带有不带括号的字符串作为值的相同字段被选中。
我无法修改包含方括号的数据集,是否有某种方法可以让 jquery 提取这些字符串字段的值?
我有一个表单输入字段,其中一些输入字符串包含括号,例如:
ducks[quack]
请注意,这不是名称、类或类似的东西。这就是价值。
当我尝试使用 jquery 选择此值时,使用字段类和 val(),它返回一个空对象。带有不带括号的字符串作为值的相同字段被选中。
我无法修改包含方括号的数据集,是否有某种方法可以让 jquery 提取这些字符串字段的值?
以下方法有效,使用属性等于符号:
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 方法形成对比,后者查找元素,然后遍历提供给选择器的字符串值的命名属性。
经过一些修改,以下工作:
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 ( 91
and 93
) 转换为十六进制格式 ( 5b
and 5d
);然后我们也附加一个空格,以分隔/结束转义的字符序列。
参考: