2015-05-28 2 views
1

У меня есть пара флажков, две из которых должны содержать некоторые поля, покрытые идентификатором.Показать идентификатор при выборе флажка

У меня он работает для одного ID, но мне нужно, чтобы он работал на 2 идентификатора.

Вот мой рабочий пример для первой галочки, она также должна работать на второй: http://jsfiddle.net/fourroses666/nane902a/1/

Это мой код:

var checkDisplay = function(check, sl) { 
    form = document.getElementById(sl), check = document.getElementById(check); 
    check.onclick = function(){ 
     form.style.display = (this.checked) ? "block" : "none"; 
     form.reset(); 
    }; 
    check.onclick(); 
}; 

checkDisplay("check", "sl"); 
+0

вам нужно показать ту же форму для обоих флажков ли? –

+0

Да, при проверке: checkbox 1, checkbox 2 или both then the div должен быть видимым. его не совсем форма, которую мне нужно показать, но некоторые поля. Поля в span id = "sl" – iMarc

ответ

1

Я хотел бы добавить классы флажков, чтобы сделать код JavaScript немного более компактными и легко позволяют добавлять дополнительные галочки в миксе.

Что-то вроде этого:

var frm = document.getElementById('sl'); 
var check = document.getElementsByClassName('showsubform'); 
for (var i = 0, length = check.length; i < length; i++) { 
    check[i].addEventListener('click', function() { frm.style.display = (this.checked) ? "block" : "none"; }); 
} 

Я редактировал your fiddle и создал рабочий пример там.

Если вы предпочитаете использовать onclick для поддержки IE8, вы можете просто заменить addEventListener с:

check[i].onclick = function() { frm.style.display = (this.checked) ? "block" : "none"; }; 
+0

Это прекрасно, очень чисто. Спасибо Mackan! – iMarc

+0

Добро пожаловать @iMarc. Примечание. Я решил использовать 'addEventListener' над' onclick', но вы должны знать, что это не поддерживается для IE8 и ниже. Его можно легко заменить на onclick, хотя: 'check [i] .onclick = function() {frm.style.display = (this.checked)? «block»: «none»; } '. Используйте то, что вы предпочитаете, результат будет таким же для чего-либо более IE8 :) – Mackan

+0

cool, я заменил его onclick, чтобы поддерживать IE8 счастливым :) – iMarc

0

Для второго флажка, checkDisplay("check2", "sl");

Однако, вам необходимо удалить form.reset() из функции onClick. Это ошибки и, таким образом, останавливает выполнение скрипта.

0

Чтобы определить свои флажки, вам необходимо использовать атрибут class. Затем присоедините событие onclick ко всем из них. Пример этот jsfiddle:

var checkDisplay = function() { 
     var form = document.getElementById('sl'); 
     var checks = document.getElementsByClassName('yourClass'); 
     for (var i = 0; i < checks.length; i++) { 
      checks[i].onclick = function(){ 
       form.style.display = (this.checked) ? "block" : "none"; 
       form.reset(); 
      }; 
     } 
    }; 

checkDisplay(); 

https://jsfiddle.net/nane902a/8/

+0

Спасибо, в этом есть небольшая ошибка при проверке обоих, а затем снимите флажок с второго, который он не отобразит, пока он должен, потому что первый проверен. Теперь я использую версию Павела. еще раз спасибо. – iMarc

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