Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Аналог :checked для ИE7-8 ? (https://javascript.ru/forum/xhtml-html-css/34937-analog-checked-dlya-ie7-8-a.html)

Deff 25.01.2013 06:30

Аналог :checked для ИE7-8 ?
 
Можно ли без скрипта (через <v:f ) или иным образом,
- Создать для ИE7-8 - аналог псевдокласса :checked ?

ksa 25.01.2013 08:38

Цитата:

Сообщение от Deff
аналог псевдокласса :checked

Есть еще селекторы атрибутов...

<style>
*[checked] {
   border: 1px solid red;
}
</style>
<input type='checkbox' checked />
<input type='checkbox' />
<input type='checkbox' checked />

Deff 25.01.2013 14:14

ksa,
:-? Cенкс за идею, но оно не меняется от смены checked
Поставил span рядом, посколь бордеры у FF и Хроме на checkbox не ставятся
<style>
input[checked="true"]+span,
input[checked="checked"]+span{
   border: 1px solid red;
}
</style>
<input type='checkbox' checked="true" />
<span>aaa</span>
<input type='checkbox' />
<span>bbb</span>
<input type='checkbox' checked="checked" />
<span>ccc</span>

ksa 25.01.2013 14:47

Цитата:

Сообщение от Deff
но оно не меняется от смены checked

да вот же... :(

devote 25.01.2013 16:48

<style type="text/css">
	/* Для ИЕ7 все как обычно */
	input[type="checkbox"] {
		checked: expression(this.className=this.className.replace(/(?:(?:^|\\s)checked(\\s|$)|$)/i, this.checked?' checked$1':'$1'));
	}

	/* Правило оформления чекнутого для ИЕ7 и ИЕ8 */
	input[type="checkbox"].checked {
		border: 1px solid red;
	}
	/* Для всех остальных браузеров */
	input[type="checkbox"]:checked {
		border: 1px solid red;
	}

</style>

<script type="text/javascript">
	/* Для ИЕ8 этот дуратский скрипт */
	if (document.attachEvent && window.Element && window.Element.prototype.querySelectorAll) {
		window.attachEvent('onload', function() {
			function test(e) {
				if(e.nodeName === "INPUT" && e.type === "checkbox") {
					e.className=e.className.replace(/(?:(?:^|\s)checked(\s|$)|$)/i, e.checked?' checked$1':'$1');
				}
			}
			document.attachEvent('onclick', function(){test(window.event.srcElement||{})});
			for(var i = 0, e = document.querySelectorAll('input[type="checkbox"]'); i < e.length; i++) {
				test(e[i]);
			}
		});
	}
</script>

<input type="checkbox" checked />

<input type="checkbox" />

<input type="checkbox" checked />

Deff 25.01.2013 17:03

devote,
:(
чот у меня в ИЕ7 не работает(ставицо но не убирается) - (*в ИЕ8 - норма
<!doctype html>
<html>
<head>
 <title>IE7 {CSS2: auto}</title>

<style type="text/css">
	/* Для ИЕ7 все как обычно */
	input[type="checkbox"]{
		checked: expression(this.className=this.className.replace(/(?:(?:^|\\s)checked(\\s|$)|$)/i, this.checked?' checked$1':'$1'));
	}

	/* Правило оформления чекнутого для ИЕ7 и ИЕ8 */
	input[type="checkbox"].checked  + span{
		border: 1px solid red;
	}
	/* Для всех остальных браузеров */
	input[type="checkbox"]:checked  + span{
		border: 1px solid red;
	}

</style>

<script type="text/javascript">
	/* Для ИЕ8 этот дуратский скрипт */
	if (document.attachEvent && window.Element && window.Element.prototype.querySelectorAll) {
		window.attachEvent('onload', function() {
			function test(e) {
				if(e.nodeName === "INPUT" && e.type === "checkbox") {
					e.className=e.className.replace(/(?:(?:^|\s)checked(\s|$)|$)/i, e.checked?' checked$1':'$1');
				}
			}
			document.attachEvent('onclick', function(){test(window.event.srcElement||{})});
			for(var i = 0, e = document.querySelectorAll('input[type="checkbox"]'); i < e.length; i++) {
				test(e[i]);
			}
		});
	}
</script>
</head>

<body>

<input type='checkbox' checked="true" />
<span>aaa</span>
<input type='checkbox' />
<span>bbb</span>
<input type='checkbox' checked="checked" />
<span>ccc</span>
<input type="checkbox" checked/>
<span>ddd</span>





</body>
</html>

devote 25.01.2013 17:21

Цитата:

Сообщение от Deff
чот у меня в ИЕ7 не работает(ставицо но не убирается)

очень странно, у меня пашет.. Для ИЕ7 должен срабатывать этот код:
checked: expression(this.className=this.className.replace(/(?:(?:^|\\s)checked(\\s|$)|$)/i, this.checked?' checked$1':'$1'));

А если отключить это:
<!-- Compliance patch for Microsoft browsers -->
 <!--[if lt IE 9]><script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"></script><![endif]-->
просто проверь

Deff 25.01.2013 17:23

Цитата:

Сообщение от devote
<!-- Compliance patch for Microsoft browsers --> <!--[if lt IE 9]><script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"></script><![endif]-->

Соррь - забыл - сейчас

devote 25.01.2013 17:28

А ну понятно, это просто ИЕ плохо работает с плюсами (+) в селекторах

Deff 25.01.2013 17:31

devote,
:-? Все наоборот при отключении не работает и в 8
Оставил ток

<!-- Compliance patch for Microsoft browsers -->
<!--[if lt IE 9]><script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"></script><![endif]-->

Работает в обоих :lol: (забыл я про скрипт-аналог для псевдоклассов)


<!doctype html>
<html>
<head>
 <title>IE7 {CSS2: auto}</title>

<!-- Compliance patch for Microsoft browsers -->
 <!--[if lt IE 9]><script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"></script><![endif]-->

<style type="text/css">
	input[type="checkbox"]:checked  + span{
		border: 1px solid red;
	}
</style>


</head>

<body>

<input type='checkbox' checked="true" />
<span>aaa</span>
<input type='checkbox' />
<span>bbb</span>
<input type='checkbox' checked="checked" />
<span>ccc</span>
<input type="checkbox" checked/>
<span>ddd</span>


</body>
</html>

Ксать во фрейме не обслуживается скриптом - поэтому ток на странице

monolithed 26.01.2013 01:17

Цитата:

Сообщение от devote
очень странно, у меня пашет.. Для ИЕ7 должен срабатывать этот код:

В хроме тоже не пашет

Deff 26.01.2013 04:45

Вот: целью было http://habrahabr.ru/post/167151/

Сейчас вопрос этот отпал,

Есть глюк этого спойлера(говорят) в ФФ 18.0.1, на Kubuntu 12.04, :(

Deff 26.01.2013 18:43

:thanks: У Кого ИЕ9 (вин7) - под гляньте => http://hostjs-mybb2011.narod.ru/SpoiLL.htm
Пишут
Цитата:

chainik,26 января 2013 в 18:05, В ИЕ9 (вин7) область для клика смещена вверх относительно текста.
Желательны советы

devote 26.01.2013 20:41

Deff, а что мешает использовать ID и FOR ?? Ведь по большей части страницы то все равно генерятся серверным языком, дык прописать ИД не проблема вроде, и работает это по крайней мере везде одинаково, и CSS меньше и HTML проще:
<!DOCTYPE html>
<html>
    <head>
        <!--[if lt IE 9]><script src="http://ie7-js.googlecode.com/svn/trunk/lib/IE9.js"></script><![endif]-->

        <style type="text/css">
            .spoiler_block > input[type="checkbox"] {
                position: absolute;
                width: 0;
                height: 0;
                opacity: 0;
                z-index: -1;
                padding: 0;
            }

            .spoiler_block > .spoiler_box {
                display: none;
            }

            .spoiler_block > label i {
                background: url('http://st0.bbcorp.ru/img/minus.png') 4px 60% no-repeat;
                display: none;
                font-style: normal;
                cursor: pointer;
                padding: 0 0 0 16px;
            }

            .spoiler_block > label i:first-child {
                background: url('http://st0.bbcorp.ru/img/plus.png') 4px 60% no-repeat;
                display: inline-block;
            }

            .spoiler_block > input[type="checkbox"]:checked + label i {
                display: inline-block;
            }

            .spoiler_block > input[type="checkbox"]:checked + label i:first-child {
                display: none;
            }

            .spoiler_block > input[type="checkbox"]:checked ~ .spoiler_box {
                display: block;
            }
        </style>
    </head>
    <body>
        <div class="spoiler_block">
            <input id="spoiler1" type="checkbox" />
            <label for="spoiler1"><i>Открыть</i><i>Закрыть</i></label>
            <div class="spoiler_box">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry.
            </div>
        </div>
        <div class="spoiler_block">
            <input id="spoiler2" type="checkbox" />
            <label for="spoiler2"><i>Открыть</i><i>Закрыть</i></label>
            <div class="spoiler_box">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry.
            </div>
        </div>
        <div class="spoiler_block">
            <input id="spoiler3" type="checkbox" />
            <label for="spoiler3"><i>Открыть</i><i>Закрыть</i></label>
            <div class="spoiler_box">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry.
            </div>
        </div>
    </body>
</html>

Deff 27.01.2013 00:03

devote,
Да этот код есть на форуме (тут)
Основные претензии были от админов форумов( форумов более 500 000, на каждом свой админ)
Они забывают менять ручками id - половина прописанных спойлов не работает (ставят в объявление и на рекламу
Упор на сервер, был сделан для Хабра

Вот код http://javascript.ru/forum/xhtml-htm...tml#post199774

Deff 27.01.2013 00:28

Цитата:

Сообщение от devote
и HTML проще:

HTML просто взял с типового, который управляется скриптом, думал, если и серверный спойл поменять, то почти не менять коды страницы(добавка только input), только сss

devote 27.01.2013 01:03

Цитата:

Сообщение от Deff
Вот код Cпойлер средсвами css - Это Возможно ?

а ну тоже верно, я не видел этого топика ранее, и проблем с этим не испытывал)

devote 27.01.2013 01:04

Цитата:

Сообщение от Deff
Они забывают менять ручками id

зачем ручками? для этого есть языки программирования

Deff 27.01.2013 01:55

devote,
Сервис бесплатных форумов - в админке максимум, что можно - воткнуть свой HTML и скрипты. ( mybb.ru) потому и изголяемся, (*в частности с кроссдоменным доступом

//Иногда проходят веяния типо упросить админа всего сервиса поставить что-то новое.


Часовой пояс GMT +3, время: 08:18.