3

我一直在尝试使用 javascript 下载 exe 文件,我之前使用单选按钮做过,但现在我不知道我应该如何下载。场景是有 3 个复选框 admin,security,security1,我应该检查是否在单击下载按钮后选择了哪个复选框组合,需要下载不同的 zip 文件。

 <button onclick="
if(!this.form.admin.checked&&!this.form.security.checked&&!this.form.security1.checked)
{
document.getElementById('errfn').innerHTML='Make atleast one selection';

}
else if (this.form.admin.checked&&this.form.security.checked&&this.form.security1.checked == 1)
{
alert('security32 and admin and security64');
}
else if (this.form.security.checked&&this.form.security1.checked == 1)
{
 alert('security64 and security32');
}
else if (this.form.admin.checked&&this.form.security.checked == 1)
{
alert('security32 and admin');
}
else if (this.form.admin.checked&&this.form.security1.checked == 1)
{
alert('security64 and admin');
}
else if (this.form.admin.checked == 1)
{
alert('admin is checked');
}
else if (this.form.security.checked == 1)
{
alert('security 32 is checked');
}
else if (this.form.security1.checked == 1)
{
alert('security64 is checked');
}
return false;

">Submit</button> 

我已经用 location.href="images/download.exe" 替换了警报;检查它是否没有被下载

适用于单选按钮的代码是

<input value="1" type="radio" id="1" name="formselector" onclick="displayForm(this)">
function displayForm(c)
{
var radios = document.getElementById("1").value;
location.href="images/WismanWeb 32 bit.exe";
}
4

2 回答 2

0

首先清理你的代码。

HTML:

<button onclick="myMethod()">Submit</button>

JS:

myMethod = function () {
    if (!this.form.admin.checked && !this.form.security.checked && !this.form.security1.checked) {
        document.getElementById('errfn').innerHTML = 'Make atleast one selection';

    } else if (this.form.admin.checked && this.form.security.checked && this.form.security1.checked == 1) {
        alert('security32 and admin and security64');
    } else if (this.form.security.checked && this.form.security1.checked == 1) {
        alert('security64 and security32');
    } else if (this.form.admin.checked && this.form.security.checked == 1) {
        alert('security32 and admin');
    } else if (this.form.admin.checked && this.form.security1.checked == 1) {
        alert('security64 and admin');
    } else if (this.form.admin.checked == 1) {
        alert('admin is checked');
    } else if (this.form.security.checked == 1) {
        alert('security 32 is checked');
    } else if (this.form.security1.checked == 1) {
        alert('security64 is checked');
    }
    return false;
}
于 2013-07-05T11:11:52.243 回答
0

你真的应该通过定义一个函数然后从按钮调用它(就像你对单选按钮所做的那样)来清理你的代码,而不是直接在标记中粘贴那个长例程。当您必须重新访问此代码以更新它时,您会感谢自己。

总体问题是您如何引用复选框。你有this.form.admin而且应该是this.document.form[0].admin。在上下文中,this关键字是window对象,因此您必须指定.document获取文档,然后访问forms您的表单可能是第一个元素的数组 ( forms[0])。正确引用表单后,您可以按名称 ( .admin, .security, .security1) 访问复选框。

另外,顺便说一句,在这种情况下并不重要(因为您没有使用id属性),但每个规范id属性必须以字母开头

工作演示:http: //jsfiddle.net/8VU7L/2/

也就是说,您可能应该通过对元素id的 DOM 导航而不是访问您的输入。form它不那么脆弱,更精确,更容易阅读。

另外,您可能想阅读最佳实践:通过 HTML id 或 name 属性访问表单元素?.

工作演示:http: //jsfiddle.net/8VU7L/

最后,对这种选择使用位域(或者更确切地说,JavaScript 等效项)可能会使您的代码更具可读性。除了可读性之外,使用这种技术将消息换成 URL 是一件轻而易举的事。

工作演示:http: //jsfiddle.net/8VU7L/1/

于 2013-07-05T12:05:45.917 回答