2013-07-10 113 views
0

我有一個gatherRadioBtn()函數,其中張貼形式其他頁面顯示錯誤。這從checkRadioWrapper()獲取提示來檢查是否所有單選按鈕都被選中。檢查所有的單選按鈕在原生javascript中檢查

但是,true條件未實現。我的(r[i].type == "radio") && !(r[i].checked)表達式中有錯誤嗎?

即將上傳於jsfiddle

謝謝。

function checkRadioWrapper() 
{ 
    for (var i=0; i < r.length; i++) 
    { 
     if ( (r[i].type == "radio") && !(r[i].checked)) 
     { 
      return false; 
     } 
    } 

    return true; 
} 

function gatherRadioBtn() 
{ 
    alert("in gather"); 
    var r = document.getElementsByTagName("input"); 
    var literal = []; 

    for (var i=0; i < r.length; i++) 
    { 
     if ( (r[i].type == "radio") && r[i].checked) 
     { 
      literal.push(r[i].name); 
      literal.push(r[i].value); 
     } 
    } 

    if (checkRadioWrapper()) 
    { 
     document.getElementById("Errnodata").innerHTML = "" ; 
     var joinedArray = literal.join(", "); 
     window.opener.document.getElementById("myarray").value= joinedArray; 
     window.opener.getVolunteerDetails(); 
     window.close(); 
    } 
    else 
    { 
     document.getElementById("Errnodata").innerHTML = "Please select for every radio btns!" ; 
    } 
} 
+0

我覺得'var r = document.getElementsByTagName(「input」);'是需要的包裝函數 –

回答

2

你必須通過 「R」 作爲參數傳遞給你的函數:

function checkRadioWrapper(r) 
{ 
    for (var i=0; i < r.length; i++) 
     // etc 

然後:

if (checkRadioWrapper(r)) 

現在,這麼說,一組單選中按鈕共享相同的名稱,瀏覽器將永遠不會允許同時檢查所有的按鈕。因此,這確實沒有多大意義。如果您的單選按鈕與其他單選按鈕不共享名稱,則應該是複選框而不是單選按鈕。

+0

它們的命名方式不同。順便說一句,你的解決方案有幫助;謝謝一堆! –

+0

不客氣!正如我在上面寫的,如果你有所有不同名稱的單選按鈕,那麼他們應該可能是複選框。 – Pointy