2011-06-23 27 views
0

循環播放一堆複選框有時失敗。 當某些或全部框被選中時,不會輸入.each功能,因此即使存在「已選中」框,我也會收到「未檢查複選框」警報。JQuery.each失敗SOMETIMES

$(document).ready(function() { 
    $("#submitme").click(function() { 
    var urls = []; 
    $("#edit :checked").each(function() { 
     var obj = {}; 
     obj.url = $(this).val(); 
     urls.push(obj); 
    }); 
    if (0 < urls.length) { 
     $.post('/myurl', {urls: JSON.stringify(urls)}); 
    } 
    else { 
     alert("no checkboxes were checked!"); 
    } 
    }); 
}); 

<div id="edit"> 
    <input type="checkbox" name="first" value="first_url"/> 
    <input type="checkbox" name="second" value="second_url"/> 
    <button id="submitme">submit</button> 
</div> 

jsFiddle Example

+0

一分鐘生病雙重檢查這在一個小提琴 – Neal

+0

當這種情況發生時,你會得到錯誤,或者你能重現這個問題嗎?把它扔進了jsFiddle,它似乎沒有失敗過一次...... –

+0

你的代碼看起來不錯,而且確實有效!看到我的小提琴:http://jsfiddle.net/heu96/ 你有其他的代碼可能會干擾頁面上?這是你的代碼的確切副本,還是你重新輸入了它? 編輯:ninja'd我發誓neal和bjorn的評論werent那裏,而我開始輸入這個 – Patricia

回答

1

沒有答案的問題。這個問題只存在於Opera中,因此它與瀏覽器相關。

0

你的選擇應該是 $( 「#編輯輸入:檢查」)

+0

這不是必需的。 – Karolis

+0

+1,但我不認爲這是問題。 – Dementic

0

我覺得你有一些語法問題。嘗試:

$(document).ready(function() { 
    $("#submitme").click(function() { 
    var urls = new Array(); 
    $("#edit :checked").each(function() { 
     var obj = new Object(); 
     obj.url = $(this).val(); 
     urls.push(obj); 
    }); 

    if (0 < urls.length){ 
     $.post('/myurl', {urls: JSON.stringify(urls)}); 
    }else { 
     alert("no checkboxes were checked!"); 
    } 
    }); 
    }); 

如果你的jsfiddle在JSLint的輸出看你得到這個

Error: 

Problem at line 2 character 25: Use the array literal notation []. 

var urls = new Array(); 

Problem at line 4 character 21: Use the object literal notation {}. 

var obj = new Object(); 

Problem at line 9 character 7: Expected '{' and instead saw 'console'. 

console.log(urls) 

Problem at line 9 character 24: Missing semicolon. 

console.log(urls) 

Problem at line 11 character 7: Expected '{' and instead saw 'alert'. 

alert("no checkboxes were checked!"); 

Implied global: $ 1,3,5, console 9, alert 11