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)

我拥有的代码是:

 <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

Highslide 允许您通过src其配置对象的属性覆盖 iframe src:

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

正如 Joshua 在您当前的代码中指出的那样:return hs.htmlExpand ..将阻止您的第二条语句 ( 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 回答