2017-04-04 97 views
1

我搜索了高和低,我無法弄清楚爲什麼此代碼適用於Chrome/FF,但不適用於IE。Javascript document.forms值不適用於Internet Explorer

function validateForm() { 
 
    var x = document.forms["myForm"].elements["fname"].value; 
 
    if (x == null || x == "") { 
 
     alert("Name must be filled out"); 
 
     return false; 
 
    } 
 
}
<body> 
 

 
<form name="myForm" action="/action_page_post.php" 
 
onsubmit="return validateForm()" method="post"> 
 
<input type="radio" name="fname" id="fname" value="1">1 
 
<input type="radio" name="fname" id="fname" value="2"> 2 
 
<input type="submit" value="Submit"> 
 
</form> 
 

 
</body>

觀看演示在這裏工作:https://www.w3schools.com/code/tryit.asp?filename=FEBA861EAACS

適用於Chrome的不是IE

+0

IE不支持該API。 (具體來說,「元素」的東西。)你將不得不使用'.querySelector()'或其他東西。 – Pointy

+0

ID是單數。 – epascarello

+0

元素是JS1.0所以是的,它確實 – mplungjan

回答

4

對於第一個,我建議有不同的ID爲fìdifferent元素

值屬性在IE中不受支持。

elements:該HTMLFormElement.elements屬性返回包含在FORM元素的所有表單控件的HTMLFormControlsCollection(HTML 4的HTMLCollection),與具有圖像的類型屬性的輸入元素除外。

您可以通過使用索引或元素名稱或ID來訪問特定元素。

因爲你有兩個電臺:

document.forms["myForm"].elements["fname"] 

,返回集合(節點列表),而不是價值。所以,你必須filter集合:

function validateForm() { 
     var x = Array.from(document.forms["myForm"] 
      .elements["fname"]).filter(function(ele, idx) { 
     return ele.checked; 
    }); 
    if (x.length == 0) { 
     alert("Name must be filled out"); 
     return false; 
    } 
} 

不同的解決方案,可以根據不同的選擇策略:

[document.querySelector('[name="myForm"] [name="fname"]:checked')][2] 

的片段:

function validateForm() { 
 
    var x = document.querySelector('[name="myForm"] [name="fname"]:checked'); 
 
    if (x == null) { 
 
     alert("Name must be filled out"); 
 
     return false; 
 
    } 
 
}
<form name="myForm" action="/action_page_post.php" 
 
     onsubmit="return validateForm()" method="post"> 
 
    <input type="radio" name="fname" id="fname1" value="1">1 
 
    <input type="radio" name="fname" id="fname2" value="2"> 2 
 
    <input type="submit" value="Submit"> 
 
</form>

+0

這很好地確保了單選按鈕組的選擇。 但是有無論如何獲得在IE瀏覽器的價值?例如,我有2個單選按鈕組。我想確保沒有爲單選按鈕組1和單選按鈕組2設置相同的選擇。 在Chrome中,我可以獲取兩個單選按鈕集的值並比較結果。任何方式在IE中做到這一點? – user3123833

相關問題