根据输入选择器创建查询字符串

时间:2014-01-12 06:39:57

标签: jquery input attributes selector datalist

在用户输入表单上,我有一些输入。其中一些绑定到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"/>

现在我尝试在输入文本值上创建一个查询字符串&amp; datalist id。所以我写了2个jquery函数:首先从datalist获取id

function sysGetDLID(dataListID,inputID)
{ return     $('#'+dataListID).find('option[value="'+$('#'+inputID).val()+'"]').attr('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来使查询字符串没有返回时。为什么呢?

1 个答案:

答案 0 :(得分:1)

而不是

elem.id

你必须这样做

elem.attr("id")

(或this.id

因为elem是一个jQuery对象。

在您的代码中,elem.idundefined,因此与其他字符串连接也会产生不需要的值

干杯