gpt4 book ai didi

Jquery .each 不起作用,代码错误还是有更好的方法可用?

转载 作者:行者123 更新时间:2023-12-01 00:53:56 25 4
gpt4 key购买 nike

首先设置:jquery 1.5.1火狐4.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 类的文本框?

加法1@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() {

加法2我一直在研究一些结果。我当前的代码如下所示:

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.each 不执行任何操作。

.each 使用的单个项目是否存在问题?

最终评论不知道为什么这会给我带来问题,但我必须稍微重新排序逻辑。即使使用Firebug,它也不会进入“.each”代码,但结果是正确的。

最终代码(注意:.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/

HTML

<input type="checkbox" value="true" name="RDEquipListItem[2]" id="RDEquipListItem_2_">&nbsp;&nbsp;&nbsp;
<input type="text" value="0" name="RequestList[2].iCount" id="RequestList_2__iCount" class="num-box" disabled="disabled">
<br />

<input type="checkbox" value="true" name="RDEquipListItem[3]" id="RDEquipListItem_3_">&nbsp;&nbsp;&nbsp;
<input type="text" value="0" name="RequestList[3].iCount" id="RequestList_3__iCount" class="num-box" disabled="disabled">
<br />

<input type="checkbox" value="true" name="RDEquipListItem[4]" id="RDEquipListItem_4_">&nbsp;&nbsp;&nbsp;
<input type="text" value="0" name="RequestList[4].iCount" id="RequestList_4__iCount" class="num-box" disabled="disabled">
<br />

JS

$('input[type=checkbox]').click(function() {
var cb = $(this);
cb.next('input[type=text]').prop('disabled', cb.is(':not(:checked)'));
});

var oneFill = $('.num-box:not(:disabled)').length > 0;
alert(oneFill);

关于Jquery .each 不起作用,代码错误还是有更好的方法可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com