jquery获得元素孙子的价值

时间:2012-03-06 21:01:32

标签: javascript jquery html forms


我正在尝试获取inputselect的值(根据祖父母的ID进行选择),并测试是否已设置/回答/回复。

<ul id="foo">
    <li>Happy text</li>
    <li><input name="A" type="text" /></li>
    <li><input name="A" type="radio" value="01" />blah</li>
    <li><input name="A" type="radio" value="02" />blah</li>
</ul>

<ul id="bar">
    <li>Happy text</li>
    <li><input name="B" type="text" /></li>
    <li><input name="B" type="radio" value="01" />blah</li>
    <li><input name="B" type="radio" value="02" />blah</li>
</ul>

<ul id="baz">
    <li>Happy text</li>
    <li>
        <select name="C">
            <option value="" />
            <option value="01">blah</option>
        </select>
    </li>
</ul>

我在javascript中尝试过一些东西(有些东西比其他东西更成功):

// question is the id of the grandparent
$("#"+question).find("input,select").val(); // this kind of works
$("#"+question).find("li").children().val();

http://jsfiddle.net/jshado1/2ttCF/

修改:我不想要已经回答的元素的值。我想知道什么没有得到回答。小提琴中的代码可以更好地解释它。

3 个答案:

答案 0 :(得分:0)

这个解决方案怎么样:

$(':input').change(function(){
  $(this).addClass('changed');
});

通过在每个元素更改后为每个元素添加一个类,您可以在给定时间获取此选择器未更改的所有元素:

$(':input:not(.changed)');

答案 1 :(得分:0)

这个工作正常:

$("#"+question).find(
    "input[type!='radio'],input[type='radio']:checked,select"
).val();

答案 2 :(得分:0)

我意识到我已经完成了大部分工作。

我最终创建了一个数组(nonresponse)并将问题名称推送到它,同时在脚本的不同部分循环响应:

它抓取所有表单元素并将所有内容放入一个关联数组中,然后通过该数组循环查找重复索引并将它们合并为一个索引,其值为数组:

responses = {
    "a": "val 1",
    "b": ["val 1","val 2","val 3"],
    "c": "", // <--
    "d": "1"
}

因此,当它检测到索引的所有实例都有空值并设置"c": "",时,我添加了nonresponse[i]=question(然后在我决定所需问题是否未得到答复的时候,我添加了{ {1}}(因为一次只能显示1个必填问题,所以没有用户抱怨未回答的问题,用户没有被问到)。