2015-11-06 60 views
0

我正在使用一些JavaScript來檢查HTML表單以查看用戶是否選擇了單選按鈕。它在Chrome,FireFox和Safari中運行得非常好,但在IE中卻不行(在不同的機器上試過ie9和ie11)。JavaScript,radiobutton.checked在IE中不工作

這是一個鏈接到頁面(這是一個學校作業,所有的代碼都可以在源代碼中很容易看到),所以你可以看看代碼並看到它在Chrome中工作,看看IE中會發生什麼。 http://lampbusters.com/bellerose/javascript/form.html (表單提交給一個簡單的echo php腳本,所以你不必擔心它發送到任何地方或保存任何信息。)

對於那些不想跟隨鏈接,這裏是代碼:

window.onload = setupEvents; 
function setupEvents() { 
document.getElementById('contactForm').onsubmit = checkForm; 
} 

function checkForm() { 
var shootType = document.contactForm.shootType 
var shootInstruct = document.getElementById('shootInstruct') 
var checkOne = false; 
var i; 
for (i in shootType) { 
    if (shootType[i].checked) { 
    checkOne = true; 
    } 
} 
    if (checkOne != true) { 
    alert("Please tell me what kind of photography shoot you're interested in."); 
    shootInstruct.style.color = "#FF0000"; 
    shootInstruct.style.fontSize = "1.2em"; 
    shootInstruct.style.fontWeight = "Bold"; 
    return false; 
    } 
    else { 
    return true; 
    } 
} 

shootType被引用與HTML相同的「name」屬性約6單選按鈕,使得它基本上用作陣列。正如你所看到的,這只是簡單地貫穿該數組,檢查是否被選中,然後提交表單(如果選中了一個)或不提交(如果沒有)。在所有其他瀏覽器中完美工作,但在IE中它永遠不會提交,即使單選按鈕被選中。由於我只是在學習js,所以我不確定哪部分是IE不支持的,並且沒有太多的運氣來搜索這個問題。任何人有一個想法,爲什麼這不是在IE瀏覽器工作?

回答

0

請勿使用作爲列表中的,請使用循環標準。在IE中,列出有其他枚舉的屬性,你不要指望:該訣竅

var controls = document.forms[0].r; 
 
for (var p in controls) document.write('"' + p + '"<br>');
<form> 
 
    <input type="radio" name="r"> 
 
    <input type="radio" name="r"> 
 
    <input type="radio" name="r"> 
 
    <input type="radio" name="r"> 
 
</form> 
 

+0

。謝謝。 – Tyler