目標:瞭解Javascript相關的IE兼容性問題。Javascript造成IE中斷形式
問題:爲什麼我的Javascript會在IE和其他地方斷開(除了「IE吸盤」,哈哈)並且有一個簡單的解決方法。
詳情:我有一個支付系統,允許用戶選擇3種支付方式(通過html單選按鈕)並使用Javascript顯示相應的表單以完成支付。在chorme和Firefox中,它完美地工作。
然而在IE中,一旦單擊了最初的單選按鈕,並且Javascript顯示適當的div,則光標跳到頁面的中下部,並且用戶無法單擊表單中的任何輸入框。
如果用戶用鼠標右鍵單擊它們,但不容易,可以訪問這些框。有很多種方法可以解決這個問題,但我試圖瞭解在IE中導致的問題。特別是如果我的編碼差。另外,如果現有代碼有一個簡單的修復方法,我會對它感興趣。
index.phtml
<form name="payo" action="/paymentAction/" method="post" >
<div id="tabs">
<div id="nav">
<input type="radio" name="tab" class="div1" value="Inv" /> Invoice <input type="radio" name="tab" class="div2" value="CC" /> Credit Card <input type="radio" name="tab" class="div3" value="Cpn"/> Coupon
</div>
<div id="div1" class="tab">
<!-- INVOICE TEXT -->
</div>
<div id="div2" class="tab">
<!-- CREDIT CARD FORM -->
Credit Card Number: <input type=text name="CardNo" placeHolder="Credit Card Number" value="" maxlength="16">
Expiration Month/Year: <font color="red">* </font>
<select name="ExpMonth">
<option value=""selected>mm</option>
<option >01</option>
<option >02</option>
<option >03</option>
</select>
<select name ="ExpYear">
<option value=""selected>yy</option>
<option >12</option>
<option >13</option>
<option >14</option>
</select>
Street Address Associated With Card: <input type=text name="Address" placeHolder="Address" value="">
</div>
<div id="div3" class="tab">
<!-- COUPON FORM -->
Coupon Code:
<input type="text" name="cpA" size=4 maxlength=4 > -
<input type="text" name="cpnB" size=6 maxlength=6> -
<input type="text" name="cpnC" size=5 maxlength=5>
<br />
</div>
<script type="text/javascript" charset="utf-8">
(function(){
var tabs =document.getElementById('tabs');
var nav = tabs.getElementsByTagName('input');
function hideTabs(){
document.getElementById('div1').style.display = "none";
document.getElementById('div2').style.display = "none";
document.getElementById('div3').style.display = "none";
}
function showTab(tab){
document.getElementById(tab).className = 'tab';
}
hideTabs();
for(var i=0;i<nav.length;i++){
nav[i].onclick = function(){
hideTabs();
var radios = document.getElementsByName('tab');
for (var i = 0, length = radios.length; i < length; i++) {
if (radios[i].checked) {
var here = i;
}
}
if (radios[here].value == "Inv") {
document.getElementById('div1').style.display = "block";
} else if(radios[here].value == "CC") {
document.getElementById('div2').style.display = "block";
} else if(radios[here].value == "Cpn") {
document.getElementById('div3').style.display = "block";
} else {
}
}
}
})();
</script>
<div id="formdiv">
<center><input type=submit name="submit" class="ButtonMain" value=" Authorize Payment "></center>
<br />
</div>
</form>
</div>
哇...請空間JS更好....這是非常難以閱讀。 – Neal
什麼版本的IE?什麼是您的標題和文檔類型? –
這個流浪''結束標籤應該被刪除。 – Pointy