首先設置: 的jQuery 1.5.1 火狐4.0Jquery。每個工作不正常,代碼不正確或者有更好的方法可用?
目標: 我已經得到了使用複選框啓用/禁用一堆文本框。如果啓用了文本框,我希望它的值大於零。
HTML的一個箱子(有他們的頁面上的變量數):
<input type="text" value="0" name="RequestList[4].iCount" id="RequestList_4__iCount" class="num-box">
我jQuery的使用。每個不工作:
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腳本,用於在選中相應的複選框時啓用/禁用文本框。
到目前爲止,我已經看到了一些很好的調整我的代碼的肉。我會明天投票給那些人。
我的困惑是,是否有與我的。每個部分的問題:
$('.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.each什麼都不做。
.each使用單個項目是否存在問題?
最終評論 不知道爲什麼這是給我一個問題,但我不得不重新排序邏輯了一下。即使使用Firebug,它也不會進入「.each」代碼,但結果是正確的。最後的代碼(注意:。NUM盒是由複選框啓用/禁用文本框):
//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
它對我有用:http://jsfiddle.net/CzNMJ/ – MoarCodePlz
檢查'myItem.attr('disabled')'和' myItem.val()'輸出。 – kei
一件事,如果你檢查值大於0,要分析價值爲數字。所以你想:'(parseInt(myItem.val(),10)> 0)'那部分。 – artlung