2013-10-15 40 views
0

我有一些地方輸入字符串包含括號,如窗體輸入字段:jQuery獲取輸入字段的值,其中字符串包含括號?

ducks[quack] 

請注意,這不是姓名,班級,類似的事情。這是價值。

當我試圖用jQuery選擇這個值時,使用字段類和val(),它返回一個空對象。與沒有括號作爲值的字符串相同的字段被選中罰款。

我不能修改包含括號的數據集,有沒有辦法讓jquery能夠爲這些字段的字段值?

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

+2

請發表您的HTML和你正在使用檢索值的JS代碼。 –

+0

你可以在jsfiddle上提供你的實際代碼/標記或演示嗎? –

回答

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 Fiddle demo

雖然使用CSS符號:#product_id_' + product沒有;我假設這是因爲需要在CSS中轉義[],後者應該是反斜槓,後跟相關字符的Unicode字符點。這與attribute-equals方法形成了對比,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 Fiddle demo

此檢索select元素的值,然後替換任意(和所有)[]字符,使用replace()方法的匿名函數。在這個功能a是找到的字符。

我們返回兩個\\字符開頭的字符串(因爲\否則轉義字符,我們希望字面\,我們要躲避逃逸);我們將其與所發現字符的字符代碼(a.charCodeAt())連接起來,並且由於CSS要求Unicode字符點採用十六進制格式,我們使用toString(16)將十進制Unicode(9193)轉換爲十六進制格式( 5b5d);然後我們會添加一個空格,以便分隔/結束轉義的字符序列。

參考文獻:

相關問題