2

ボタンのhrefの場所を変更するラジオボタンを選択して、JavaScriptポップアップで開くことができるフォームを作成しようとしています。私が持っているhrefの変更のJSは次のとおりです。

<script type="text/javascript">
<!--
// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
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 "";
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
if(!radioObj)
    return;
var radioLength = radioObj.length;
if(radioLength == undefined) {
    radioObj.checked = (radioObj.value == newValue.toString());
    return;
}
for(var i = 0; i < radioLength; i++) {
    radioObj[i].checked = false;
    if(radioObj[i].value == newValue.toString()) {
        radioObj[i].checked = true;
    }
}
}
//-->
</script>

ポップアップのJSは、Highslide JS(highslide.com)からのものです。

私が持っているfromコードは次のとおりです。

 <form name="radioExampleForm" method="get" action="" onsubmit="return false;">
<p><label for="number0"><input type="radio" value="popups/download1.html" name="number"     id="number0"> Free</label>
&nbsp;<label for="number1"><input type="radio" value="popups/download2.html" name="number" id="number1">Premium</label>

<p>
<input type="button" onclick="return hs.htmlExpand(this, { objectType: 'iframe' } ); window.location.href = (getCheckedValue(document.forms['radioExampleForm'].elements['number']));" value="Download" class="button">
</form>

これらを組み合わせることができますか?もしそうなら、私は何を間違っていますか?両方のJSは、私がそれらを組み合わせたときに機能しません。

4

1 に答える 1

0

srcHighslideを使用すると、構成オブジェクトのプロパティを介してiframesrcをオーバーライドできます。

hs.htmlExpand(this, {
    objectType: 'iframe',
    src: 'mypage.html'
});

Joshuaが現在のコードで指摘しているreturn hs.htmlExpand ..ように、2番目のステートメント(window.location ..)が実行されなくなります。実行したとしても、現在のブラウザウィンドウの場所をターゲットURLに変更するだけです。

解決策は次のようになります。

<form name="radioExampleForm" method="get" action="" onsubmit="return false;">
    <p>
        <label for="number0"><input type="radio" value="popups/download1.html" name="number" id="number0"> Free</label>&nbsp;
        <label for="number1"><input type="radio" value="popups/download2.html" name="number" id="number1">Premium</label>
    <p>

    <input type="button" onclick="return hs.htmlExpand(this, { objectType: 'iframe', src: getCheckedValue(document.forms['radioExampleForm'].elements['number']) } );" value="Download" class="button">
</form>
于 2012-11-20T23:43:44.693 に答える