使用jQuery在循环中查找所有选择输入

时间:2010-09-09 04:07:41

标签: jquery

我有一个为ajax调用创建数据字符串的循环。这是代码:

    $(':input','#texes-test-entry-0').not(':button, :submit, :reset, :hidden').each(function(){
        varStr = $(this).attr("id").split('-');
        dataString = dataString + '&' + varStr[1] + '=' + $(this).val();
    });

对于所有文本输入$(this).val()获取我需要的值,但对于选择输入,我不需要文本值,而是选择的选项值。

如何捕捉选择输入并以不同方式对待它们?

由于

2 个答案:

答案 0 :(得分:0)

尝试将if放在选择所有输入的循环内,并检查当前元素是否有选项,如果是,则不处理它。

if($(this).has('option'))
{
<ignore>
}
else
{
<process>
}

答案 1 :(得分:0)

您不需要以不同方式处理选择元素,val方法将从选择中获取所选值。

示例:

<script type="text/javascript">
$(function(){
  var data = [];
  $(':input','#texes-test-entry-0').not(':button, :submit, :reset, :hidden').each(function(){
    varStr = $(this).attr("id").split('-');
    data.push(varStr[1] + '=' + $(this).val().replace(/%/g,'%37').replace(/&/g,'%38'));
  });
  var dataString = data.join('&');
  alert(dataString);
});
</script>

<form id="texes-test-entry-0">
  <input type="text" id="x-id1" value="as%&df" />
  <select id="x-id2">
    <option value="1">one</option>
    <option value="2" selected="selected">two</option>
    <option value="3">three</option>
  </select>
</form>

输出:

id1=as%37%38df&id2=2