【发布时间】:2015-03-04 15:19:28
【问题描述】:
我有一个必须用 jsoup 阅读的表单,它包含多个字段,包括复选框和组合框(选择输入)。
我正在使用以下代码读取那里的值 -
Element campaignForm = doc.getElementById("Campaign");
Elements allInputFields = campaignForm.getElementsByTag("input");
Elements allSelections = campaignForm.getElementsByTag("select");
Map<String, String> postData = new HashMap<String, String>();
for(Element selectField:allSelections){
postData.put(selectField.attr("name"), selectField.attr("value"));
}
for(Element inputField:allInputFields){
if(inputField.attr("type").equalsIgnoreCase("checkbox")){
postData.put(inputField.attr("name"), inputField.attr("checked").equalsIgnoreCase("checked")?"1":"0");
}else{
postData.put(inputField.attr("name"), inputField.attr("value"));
}
}
因此,当我打印 postData Map 时,它会为文本输入字段提供正确的值,但对于复选框和下拉(组合框)它不起作用。请让我知道是否有不同的方式来处理复选框并在 jsoup 中选择输入。
编辑: 我在评论的帮助下工作的复选框,但选择输入仍然不起作用。
提前致谢。
【问题讨论】:
-
复选框真的有值吗?合法问题,因为:
<input name="a" type="checked">如果检查并提交,将生成一个参数 (a=on)。因此,有时不需要使用值。我认为这同样适用于选择选项。 -
是否有任何简单的解决方案,或者我必须检查所有复选框状态是否选中/未选中,选择选项是什么意思,因为它们确实有值?不是吗?
-
它们不需要有值属性。如果没有 value 属性,将使用内部文本。长话短说jsfiddle 你不能在那里真正运行这个例子,但它应该解释我的评论(答案;))。是的,您必须检查复选框元素上的选中属性。
-
是的,Meistermeier,我的复选框工作了,但选择输入仍然不工作:(
-
只是猜测:在选择案例中使用(选定)选项中的#text()。如果您需要更清晰的答案,您可以提供一些您正在解析的 html。