首先设置:jquery 1.5.1Firefox 4.0
目标:我有一堆文本框是启用/禁用使用复选框。如果一个文本框被启用,我希望它的值大于0。
其中一个框的HTML(页面上有可变数量的框):
<input type="text" value="0" name="RequestList[4].iCount" id="RequestList_4__iCount" class="num-box">
我的jQuery使用。each不工作:
var oneFill = false;
$('.num-box').each(function() {
var myItem = $(this);
if (myItem.attr('disabled') == false) {
if (myItem.val() > 0) {
oneFill = true;
}
}
});
if (!oneFill) {
当我在Firebug中跟踪上述代码时,它没有做任何事情。它继续到下一行代码(if(!oneFill))。
当我在Firebug中使用$('.num-box')时,它返回所有文本框的完整列表。我很有信心我有正确的选择器。
问题是,我做错了什么?我在这里看了很多例子,看来我使用。each是正确的。
但是,是否有一个更有效的方法来检查所有启用的文本框与类num-box?
Addition1 @artlung继续上面的html示例,我至少会有以下内容:
<input type="text" value="0" name="RequestList[1].iCount" id="RequestList_1__iCount" class="num-box">
<input type="text" value="0" name="RequestList[2].iCount" id="RequestList_2__iCount" class="num-box">
<input type="text" value="0" name="RequestList[3].iCount" id="RequestList_3__iCount" class="num-box">
<input type="text" value="0" name="RequestList[4].iCount" id="RequestList_4__iCount" class="num-box">
复选框看起来像:
<input type="checkbox" value="true" name="RDEquipListItem[1]" id="RDEquipListItem_1_">
<input type="checkbox" value="true" name="RDEquipListItem[2]" id="RDEquipListItem_2_">
<input type="checkbox" value="true" name="RDEquipListItem[3]" id="RDEquipListItem_3_">
<input type="checkbox" value="true" name="RDEquipListItem[4]" id="RDEquipListItem_4_">
我有java脚本,启用/禁用文本框时,适当的复选框被选中。
到目前为止,我已经看到了对我的代码的一些很好的调整。我明天会投那些票。我的困惑是我的。each部分是否有问题:
$('.num-box').each(function() {
Addition2 我一直在摆弄一些结果。我当前的代码如下:
var oneFill = false;
var myEnabled = $('.num-box:enabled');
myEnabled.each(function() {
var myItem = $(this);
if (parseInt(myItem.val()) > 0) {
oneFill = true;
}
});
if (!oneFill) {
myEnabled获取已启用元素的正确列表。大拇指
然而,myEnabled。
是否有一个单独的项目被使用的问题?
最后评论不知道为什么这给了我一个问题,但我不得不重新排序的逻辑一点。即使使用Firebug,它也不会进入"。每个"代码但结果是正确的。
最终代码(注:.num-box是通过复选框启用/禁用的文本框):
//make sure one item has been filled in and all are greater than zero
var allFilled = true;
var myEnabled = $('.num-box:enabled');
//check that we have at least one item checked out
if (myEnabled.length == 0) {
alert("At least one needs to be filled.");
return false;
}
$.each(myEnabled, function() {
var myItem = $(this);
if (parseInt(myItem.val()) <= 0) {
allFilled = false;
}
});
if (!allFilled)
{
//go do something
我认为你需要检查当前的num-box
是否被禁用,执行以下操作…
myItem.is(':disabled')
编辑
如果不使用。each,你能完成你想做的事情吗?
之类的…http://jsfiddle.net/fWCxj/2/