jQuery获取输入字段的值,其中string包含括号?

时间:2013-10-15 12:46:59

标签: jquery

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

ducks[quack]

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

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

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

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

1 个答案:

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

JS Fiddle demo

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

JS Fiddle demo

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

我们返回以两个\\个字符开头的字符串(因为\是一个转义字符,我们想要文字\,我们必须逃避转义);我们用找到的字符(a.charCodeAt())的字符代码连接起来,因为CSS要求Unicode字符点采用十六进制格式,我们使用toString(16)来转换十进制Unicode({ {1}}和91)为十六进制格式(935b);然后我们也附加一个空格,以便分隔/结束转义的字符序列。

参考文献: