我有一个输入类型复选框如下:
<tr class=odd>
<td align="center"> <input type="checkbox" id="psn" name="psn" value='20500561' /> </td>
<td width="75"> 20500561 </td>
<td> ABCDEFG CO <span style="color:maroon;font-size:8pt;"></span> </td>
<td> 715 LOCAL STREET </td>
<td> ST.LOUIS </td>
<td> MO </td>
</tr>
<tr class=even >
<td align="center"> <input type="checkbox" id="psn" name="psn" value='26736' /> </td>
<td width="75"> 26736 </td>
<td> ABC <span style="color:maroon;font-size:8pt;"></span> </td>
<td> 1716 LOCUST ST </td>
<td> DES MOINES </td>
<td> IA </td>
</tr> .....
我有一个提交按钮,点击它时会调用此JQuery,
$('#submitButton').click(function () {
var mySelect = checkSelected();
if (mySelect == undefined) {
alert("You must select an item to continue.");
return false;
}
var commaSepVals = '';
for(var index=0;index < document.searchCridResults.psn.length; index++ ){
if(document.searchCridResults.psn[index].checked){
alert("checked crid");
commaSepVals += document.searchCridResults.psn[index].value+',';
alert("commaSepVals ))) "+commaSepVals);
}
}
commaSepVals = commaSepVals.substr(0,commaSepVals.length -1);
var returnValsFromQ = '<c:out value="${sessionScope.returnVals}" />';
var returnArray = returnValsFromQ .split(',');
///////////////
}
function checkSelected() {
var selected = $('input[name=psn]:checked').val();
return selected;
}
上述代码适用于大于1的行但在row = 1时失败。 当只有一行时,document.searchCridResults.psn.length未定义。所以我无法获得已检查项目的值。
答案 0 :(得分:4)
这是一个有趣的情况,答案是:使用更多的jQuery。 : - )
如果你想一直得到一个类似数组的东西(特别是:一个jQuery实例),而不是
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
// This used to be:
//return UIInterfaceOrientationPortrait;
}
使用
document.searchCridResults.psn
问题在于,当只有一个时,document.searchCridResults.psn是对该一个元素的引用。当有多个时,DOM会创建一个类似于数组的东西($(document.searchCridResults).find("[name=psn]")
)。另一方面,jQuery 总是基于集合(这是它的强大功能)。
例如,创建NodeList
字符串的循环可以转换为:
commaSepVals
直播示例:
commaSepVals = $(document.searchCridResults).find("[name=psn]").filter(function() {
return this.checked;
}).map(function() {
return this.value;
}).get().join(",");
$("[name=psn]").on("click", function() {
var commaSepVals = $("#searchCridResults").find("[name=psn]").filter(function() {
return this.checked;
}).map(function() {
return this.value;
}).get().join(",");
$("<p>Selected: " + commaSepVals + "</p>").appendTo(document.body);
});
旁注:在多个元素上使用相同的<p>Click checkboxes below</p>
<table id="searchCridResults">
<tbody>
<tr>
<td>
<label>
<input type="checkbox" name="psn" value='first' />first</label>
</td>
<td>
<label>
<input type="checkbox" name="psn" value='second' />second</label>
</td>
<td>
<label>
<input type="checkbox" name="psn" value='third' />third</label>
</td>
<td>
<label>
<input type="checkbox" name="psn" value='fourth' />fourth</label>
</td>
</tr>
</tbody>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
值是无效的。相同的 id
可以,但name
不一样。