2013-07-05 4 views
3

Я много пытался скачать exe-файлы с помощью javascript, я сделал это с помощью переключателей раньше, но теперь я не знаю, как мне скачать. В сценарии есть три флажка admin, security, security1, и я должен проверить, будет ли выбрана комбинация флажков после этого, нажав на кнопку загрузки, необходимо загрузить различные zip-файлы.ссылка на javascript не работает

<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"; 
} 
+0

Вместо того, чтобы просто зарегистрировавшись на SO и опубликовав вопрос вы должны по крайней мере _try_ искать что-то связаны между собой. Здесь есть буквально _dozens_ вопросов, которые отвечают на то, что вам нужно. – Joum

+0

@Ambily Избегайте запуска 'id' Название как номер. – Praveen

+0

@Ambily Опубликовать HTML-код вашей формы – Praveen

ответ

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; 
} 
0

Вы действительно должны очистить свой код, определив функцию, а затем вызвать его с помощью кнопки (как вы делали с радиокнопками) вместо того, чтобы придерживаться этой длительной процедуры непосредственно в разметке. Вы поблагодарите себя за дорогу, когда вам придется пересмотреть этот код, чтобы обновить его.

Общая проблема заключается в том, как вы ссылаетесь на эти флажки. У вас есть this.form.admin, и это должно быть this.document.form[0].admin. В контексте ключевое слово this является объектом window, поэтому вам нужно указать .document, чтобы перейти к документу, а затем получить доступ к массиву forms, где ваша форма, по-видимому, является первым элементом (forms[0]). После правильной ссылки на форму вы можете получить доступ к своим флажкам по имени (.admin, .security, .security1).

Кроме того, в стороне, не важно, чтобы это имело значение в этом случае (поскольку вы не используете атрибуты id), но по спецификации id attributes must begin with a letter.

Работа демо: http://jsfiddle.net/8VU7L/2/

Это говорит, вероятно, вы должны получить доступ к входам по id вместо DOM навигации к form элементу. Он менее хрупкий, более точный и читается легче.

Как еще один, вы можете прочитать Best Practice: Access form elements by HTML id or name attribute?.

Работа демо: http://jsfiddle.net/8VU7L/

Наконец, это может сделать ваш код более читаемым использовать битовый (или, вернее, эквивалент JavaScript) для такого рода выбора. В дополнение к удобочитаемости, это позволяет быстро обмениваться сообщениями для URL-адресов, используя эту технику.

Работа демо: http://jsfiddle.net/8VU7L/1/

Смежные вопросы