2014-01-12 194 views
0

作出查詢字符串,我有一些輸入。他們中的一些綁定到DataList和DataList控件有ID &值是這樣的:根據用戶輸入表單上的輸入選擇器

<input list="browserList" id="browser" value="opera"/> 
<datalist id="browserList"> 
<option id="1" value="Chrome"> 
<option id="2" value="Firefox"> 
<option id="3" value="Opera"> 
<option id="4" value="Safari"> 
</datalist> 

<input list="colorList" id="color" value="blue"/> 
<datalist id="colorList"> 
<option id="0" value="red"/> 
<option id="1" value="blue"/> 
<option id="2" value="green"/> 
</datalist> 

<input type="text" id="name"/> 
<input type="text" id="family"/> 

現在我儘量讓輸入文本值& DataList控件ID的查詢字符串。所以我寫2 jQuery的功能:首先從數據列表

function sysGetDLID(dataListID,inputID) 
{ return  $('#'+dataListID).find('option[value="'+$('#'+inputID).val()+'"]').attr('id'); } 

和未來獲取ID:

function inputSelector2QueryString(whatSelector) 
{ var queryString = ''; 
    $(whatSelector).each(function() 
    { var elem=$(this); 
     queryString = queryString 
        + '&' 
        + elem.id 
        + '=' 
        + (elem.attr('list')!=='' 
        ? sysGetDLID(elem.id+'List',elem.val()) 
        : elem.val()); }); 
return queryString; } 

但是當我打電話inputSelector2QueryString使查詢字符串沒有什麼回報。爲什麼?

+0

是否有一個原因,你這樣做是自己,而不是使用jQuery的'.serialize( )'功能? – Barmar

+0

如果您打算在AJAX調用中使用它,jQuery允許您將數據指定爲對象,並將其轉換爲查詢字符串。 – Barmar

+0

我不知道.serialize(),但我解決了一些基於@Edgar Villegas Alvarado通知的代碼更改。 TXN埃德加。這是我的代碼,可能對其他人有用:'$(whatSelector).each(function(){queryString = queryString +'&'+ this.id +'='+(typeof $(this).attr('list' )=='undefined'?$(this).val():sysGetDLID(this.id +'List',this.id));});' –

回答

1

而不是

elem.id 

你要做的

elem.attr("id") 

(或this.id,太)

因爲elem是一個jQuery對象。

在你的代碼,elem.idundefined,因此串聯到其他琴絃也造成了不必要的值

乾杯

+0

您也可以使用'this.id',因爲'elem'只是圍繞'this'的jQuery包裝器。 – Barmar

+0

是的,這是另一種選擇 –

+0

我添加它以防萬一,thx –

相關問題