Переключатель радио в iframe - PullRequest
0 голосов
/ 27 июля 2010

У меня есть JavaScript, который находится в iframe.Когда я проверяю переключатель в iframe, в родительском окне меняем значение.Он отлично работает на Firefox, но не на IE ... Может кто-нибудь помочь мне с этой проблемой?

<script type="text/javascript">
function getCheckedValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function asd(){
var qwer =  getCheckedValue(document.forms['uas'].elements['icon']);
window.parent.document.forms['register'].lang.value = qwer;
window.parent.document.getElementById("images").getElementsByTagName("img")[0].src = "images/lang/" + qwer  + ".png";

}
</script>

<form name="uas" method="GET" action="" onchange="asd();">
<label id="1"><input type="radio" name="icon" value="1">One</label><br><label id="2"><input type="radio" name="icon" value="2">Two ...

1 Ответ

0 голосов
/ 27 июля 2010

Проблема с вашим кодом - событие onchange, прикрепленное к элементу формы, IE не поддерживает это.Вместо этого вы должны использовать событие onchange для каждой из переключателей:

<label id="1"><input type="radio" name="icon" value="1" onchange="asd();">One</label>
<label id="2"><input type="radio" name="icon" value="2" onchange="asd();">Two</label>

В качестве альтернативы вы можете использовать Javascript для автоматического добавления прослушивателя событий.

Также эта строка:

window.parent.document.getElementById("images").getElementsByTagName("img")[0].src = "images/lang/" + qwer  + ".png";

не правильно, getElementById уже возвращает нужное изображение, поэтому getElementById ("images"). Src = ... сделает свое дело.

...