2013-06-20 1 views
0

Я пробовал в течение нескольких дней, чтобы заставить это работать в IE, и в конечном итоге отказался, представив пользователю окно предупреждения, предупреждающее пользователей о том, что форма не полностью работать в IE. Тем не менее, люди все еще используют IE, чтобы заполнить форму, и мне нужно отправлять по электронной почте туда и обратно, чтобы закончить их регистрацию, поэтому я хотел бы узнать, смогу ли я исправить исходную проблему. У меня есть длинная форма регистрации для события здесь:Как скрыть и показать Javascript и CSS с помощью флажка в Internet Explorer

http://rhythmshuffle.com/RS2013/Register.html

я решил обработать длину формы, выявляя элементы формы, когда пользователь щелкает различные флажки, например, сечение корпуса в самом низу формы. Вот JavaScript:

function togglehide(thiselem) { 
    var item = document.getElementById(thiselem); 
    if (item) {if (item.className == 'unhidden') {item.className='hidden';} else {item.className='unhidden';}} 
} 

вот соответствующий CSS:

.hidden {display: none; overflow: hidden; border: none; text-decoration: none; background: transparent;} 
.unhidden {display: block; overflow: auto; border: none; text-decoration: none; background: transparent;} 

и вот пример HTML:

<input type="checkbox" name="housing" value="yes" onClick="javascript:togglehide('housingrequest')"/> 
<div id=housingrequest class=hidden> 
    whatever - more form elems... 
</div> 

Кто-нибудь знает, как сделать эту работу в IE? Я искал Stack Overflow некоторое время назад, когда я изначально работал над этим. Я пробовал ряд предложений, которые отвечали на похожие, но немного разные проблемы, но никто из них не работал для меня (я бы сказал, что я пробовал, но не могу вспомнить сейчас).

Спасибо, Роб

UPDATE: Я подтвердил себя, что код работает в IE 9 & 10 (несмотря на то, что другие тестеры были мне сказать). Поэтому этот вопрос специально для IE 8 и ниже. По-видимому, некоторые из моих пользователей по-прежнему используют устаревшие версии IE. Фактически, один из них предпочитал распечатывать снимки экрана, которые я отправил ей, чтобы отправить мне регистрацию, а не устанавливать какой-либо другой современный браузер! вздох

+0

Так что же происходит в IE при нажатии на флажок? – Pointy

+1

Вам не нужен префикс 'javascript:' в атрибуте _onclick_. –

+0

Вам не нужен 'else', так как это просто задает имя класса для того, что оно уже есть. – Joe

ответ

0

первый дает идентификатор для входа:

<input id="test" type="checkbox" name="housing" value="yes"/> 
<div id="housingrequest" class="hidden"> 
    whatever - more form elems... 
</div> 

затем использовать этот код JQuery:

$("input#test").click(function(){ 
    if($(this).is(":checked")){ 
     $("div#housingrequest").show(); 
    } 
    else{ 
     $("div#housingrequest").hide(); 
    } 
}); 
+0

Я не очень jquery savvy, или javascript подкованных в этом отношении ... У меня есть ряд этих скрывающих/раскрывающих функций. Есть ли способ дать идентификатор вещи, которую я хочу показать/скрыть? - Я выполняю ваше предложение сейчас BTW. Я дам вам знать, как это происходит. – hepcat72

+0

Мне пришлось обернуть код jquery в «$ (function() {...});», но теперь это тестовый пример, который работает в Safari. Все, что мне нужно сделать, это найти кого-то, кто проверит его в разных версиях IE. – hepcat72

+0

Ну, это раздражает. До сих пор все, кто тестировал это для меня, утверждают, что и старые, и новые методы работают в IE 9 и 10. Поэтому мне сложно воспроизводить поведение IE в IE. Я знаю, что это не работает для некоторых людей. Я собираюсь заглянуть в stackbrowser, о котором упоминалось в другом комментарии. – hepcat72