我正在尝试获取input
或select
的值(根据祖父母的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/
修改:我不想要已经回答的元素的值。我想知道什么没有得到回答。小提琴中的代码可以更好地解释它。
答案 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个必填问题,所以没有用户抱怨未回答的问题,用户没有被问到)。