2012-05-04 62 views
1

我有5 div標籤具有相同的類別。每個div標籤都有一個文本框和一個帶數字的下拉列表。如何檢查我的div標籤字段是否爲null,以及它的null是否與Jquery做些什麼

如何檢查所有這些div標籤的文本框和下拉列表是否爲空或者是否爲「執行某些操作」。

$step是一個包含我所有的div標籤的數組。

var $step = $(".wizard-step2:visible"); 

我的文本框有一個類Comment和我的下拉列表有一個類Grade

我已經編碼這個到目前爲止,但它的錯誤,我不希望它檢查每個div標記,我希望它檢查所有這些。

這是一種錯誤的代碼:

var Comment = $step.find(".Comment").val(); 
var Grade = $step.find(".Grade").val(); 

for (var i = 0; i < $step.length; i++) { 
    if (Comment != null && Grade > 0) { { 
     // do this 
    } 
    } else { 
     alert("You must enter both fields"); 
    } 
} 

編輯:

我覺得我沒有解釋我的問題很好,我的代碼工作像所有我在這個問題上得到了答案。我不想讓這個if語句來檢查每個div標籤。我希望能夠檢查是否所有的div標籤都有空字段做「其他如果所有的div標籤字段都填滿了東西

用戶可以將字段留空,但如果所有的div標籤字段填充做些什麼

我不想爲每個div標籤做一個if語句,如果所有的div標籤都有空字段或者全部都是字段,我想要做一個if語句

可以說我有5個div標籤,我填充了4個標籤,當我填充最後一個5個div標籤時,我想要這個「做些什麼」,否則什麼都不應該發生。在div標籤1,2,3,4上執行a重新裝滿我希望在第五充滿怎麼一回事,因爲那麼所有的div標籤都充滿別的什麼都不發生

+2

你能否也請張貼你的HTML –

+4

我推薦使用jsfiddle,它讓任何人都可以更容易地玩弄你的問題 –

+0

它很難做到這一點,因爲這只是一個部分我有一個牆的jquery代碼:/ – Obsivus

回答

1

查找每個類的填充元素,然後用這個選項的長度來執行你的測試:

var $step = $(".wizard-step2:visible"); 

// returns true if the element's value is not null 
function filled() { 
    return !!this.value; 
} 

// count the number of non-empty elements 
var n_step  = $step.length; 
var n_comments = $step.find('.Comment').filter(filled).length; 
var n_grades = $step.find('.Grade' ).filter(filled).length; 

if (n_comments === n_step && n_grades === n_step) { 
    // all filled 
} else if (n_comments === 0 && n_grades === 0) { 
    // all empty 
} else { 
    // mixed - do nothing 
} 
+0

我的代碼做你的事情。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

+0

我的代碼做你的事情。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

+0

當我說5是否僅僅是例子時,div標籤的數量可以是1-20之間的任何值,這完全取決於用戶選擇的內容。 – Obsivus

1

事情是這樣的if語句發生:

$(".wizard-step2:visible").each(function(){ 
    var Comment = $(this).find(".Comment").val(); 
    var Grade = $(this).find(".Grade").val(); 

    if (Comment != '' && Grade > 0) { 
    { 
     // do this 
    } else { 
     alert("You must enter both fields"); 
    } 
}); 
+0

+1,此外,爲了安全起見,我還會指定元素標記,以防萬一類在div中與其他控件相關聯,以後可能需要或可能不需要包含在驗證。有些像這樣:'$(this).find(「input [type ='text'] .Comment」).val();'和$(this).find(「select .Grade」).val() ;'(不知道我的語法是否正確) – Nope

+0

是的,除非您確定這些事情,否則您應該始終保持安全並儘可能使您的選擇器具有特定的形狀 – Falle1234

+0

我的代碼完成您的工作。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

0

想方設法把每個東西在裏面您的評論像

var bOK, Comment, Grade ; 
     $step.each(function(){ 
     Comment = $(this).find(".Comment").val(); 
     Grade = $(this).find(".Grade").val(); 
if(put your condition here) 
else { 
bOK = false; 
return false 
} 
     }); 
// Now test your condition with bOK 
+0

我的代碼做你的事情。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

0

可以遍歷集合或數組是這樣的:

$(".wizard-step2:visible").each(function(count){ 
    var isCommentEmpty = $(this).find(".comment").val().length == 0; 
    if(isCommentEmpty){ 
     alert('Comment on div ' + count + ' is empty!'; 
    } 
}); 
+0

我的代碼完成你的工作。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

0

你應該使用jQuery的each()方法循環您$(".wizard-step2:visible")陣列的div。

看一看這個jsFiddle我已經創建了向您展示如何實現這個

編輯:

這是的jsfiddle代碼JIST這裏: -

$('.wizard-step2:visible').each(function(){ 

    var txtBox = $(this).find('.comment'); 
    var Select = $(this).find('.Grade'); 
    var thisDiv = $(this).attr('id'); 

    if(txtBox.val().length > 0 && Select.val().length > 0) 
    { 
     alert("values for " +thisDiv+ " are fine"); 
    } 
    else 
    { 
     alert("please fill in both values for " + thisDiv); 
    } 
}); 
+0

如果鏈接在將來的某個階段死掉,相關的JavaScript實現應該也可以包含在答案中。 – Nope

+0

@FrançoisWahl採取點,已編輯我的帖子。謝謝 –

+0

我的代碼做你的事情。請在我的問題上閱讀我的編輯。我想我解釋說它不好。我希望你現在閱讀後能夠理解我的問題。謝謝! – Obsivus

相關問題