0

我有一个表单输入字段,其中一些输入字符串包含括号,例如:

ducks[quack]

请注意,这不是名称、类或类似的东西。这就是价值。

当我尝试使用 jquery 选择此值时,使用字段类和 val(),它返回一个空对象。带有不带括号的字符串作为值的相同字段被选中。

我无法修改包含方括号的数据集,是否有某种方法可以让 jquery 提取这些字符串字段的值?

http://jsfiddle.net/V8XP2/10/

4

1 回答 1

1

以下方法有效,使用属性等于符号:

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);
});

JS 小提琴演示

虽然使用 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);
});

JS 小提琴演示

这将检索元素的值,然后使用该方法的匿名函数select替换任何(和所有)字符[和字符。在这个函数中是找到的字符。]replace()a

我们返回以两个字符开头的字符串\\(因为\否则是转义字符,并且我们想要文字\,我们必须转义转义);我们将其与找到的字符 ( a.charCodeAt()) 的字符代码连接起来,因为 CSS 要求 Unicode 字符点为十六进制格式,所以我们使用toString(16)将十进制 Unicode ( 91and 93) 转换为十六进制格式 ( 5band 5d);然后我们也附加一个空格,以分隔/结束转义的字符序列。

参考:

于 2013-10-15T14:00:11.043 回答