Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   onclick срабатывает со 2 раза в ie (https://javascript.ru/forum/misc/36679-onclick-srabatyvaet-so-2-raza-v-ie.html)

djonA 24.03.2013 15:10

onclick срабатывает со 2 раза в ie
 
подскажите не могу разобраться, в ie onclick срабатывает со второго раза. не когда я ставлю галочку в input, а когда я ее убираю

Display:none проверил прописанно, все равно не срабатывает.

Вот код выкладываю.
Вызывается при постановке галочки в input'e:
<input 
type="checkbox" 
name="param_{$params[i].optionID}_{$params[i].variants[j].variantID}"
value="yep" 
id="filter-checkbox-{$params[i].variants[j].variantID}"
class="filter-checkbox"
onclick="showInformer(this);">



ну и js:
function showInformer(block){
        $(block).bt({
            trigger        : 'click',
            positions        :  ['left'],
            contentSelector    : "$('#filter-informer-bt').html()", 
            width        : 'auto',
            fill            : '#f0f0f0',
            strokeWidth    : 1,           
            strokeStyle    : "#06007a",  
            spikeLength    : 10,
            spikeGirth        : 15,
            padding        : 5,
            cornerRadius    : 0,
			cssClass        : 'filter-info',
            closeWhenOthersOpen: true,
            preShow: function(box){
                var pos = $('#filter-div').position();
                var width = $('#filter-div').outerWidth();
                $(box).css({ left: (pos.left - 136) + "px"});

            }
        });
       	
    };



ну и то что выводится:
<div id="filter-informer-bt" class="filter-hide"><div id="filter-informer"> Тест</div></div>



Вот срабатывает не когда я ставлю input (галочку) а когда ее убираю

megaupload 24.03.2013 16:30

видимоб обработчик поставки галочки возвразщает false или типа того

djonA 24.03.2013 17:47

Как это решить подскажите плизз???

djonA 24.03.2013 20:11

добавил return false. Теперь такая картина во всех браузерах срабатывает со 2 раза onclick.

Что это может быть подскажите???

Ervin 24.03.2013 20:16

А что есть вместо onclick сменить на onchange ?

djonA 24.03.2013 20:18

Так же само со второго раза.

Проблема где то в обработчике наверно что оно возвращает значение false

Но где не могу понять

Ervin 24.03.2013 20:29

Честно говоря не знаю почему такое может быть, тк не знаю как работает метод bt. При нормальных обстоятельствах все работает, поэтому определено что-то изменяется этим методом.

Ervin 24.03.2013 20:37

Хотя я бы всетаки обошёл это простым биндом через jquery.
Например, добавить класс и по нему найти элемент и добавить событие.

djonA 24.03.2013 21:00

а можно пример, мне так проще будет?

Ervin 24.03.2013 21:13

<input 
type="checkbox" 
name="param_{$params[i].optionID}_{$params[i].variants[j].variantID}"
value="yep" 
id="filter-checkbox-{$params[i].variants[j].variantID}"
class="filter-checkbox dodgy-checkbox">


$(".dodgy-checkbox").bind("click", function() {
   showInformer(this);
});

djonA 24.03.2013 21:24

теперь все отлично работает в ie, а в firefox'e со 2 раза срабатывает

Ervin 24.03.2013 21:31

Тогда можно добавить:
$(".dodgy-checkbox").unbind().bind("click", function() {
   showInformer(this);
});

djonA 24.03.2013 21:35

Опять в ie все работает как часы в firefox не срабатывает с 1 раза, с срабатывает со второго

Ervin 24.03.2013 21:45

Уж, даже и не знаю, что может быть. Хочу уточнить, что если ты после перезагрузки станицы кликаешь то не срабатывает на 1 раз ? Тогда это просто состояние чекбокса нужно задать вручную, должно пофиксить.
<input 
type="checkbox" 
name="param_{$params[i].optionID}_{$params[i].variants[j].variantID}"
value="yep" 
id="filter-checkbox-{$params[i].variants[j].variantID}"
class="filter-checkbox dodgy-checkbox" checked="checked">

ILL-JAH 24.03.2013 22:35

djonA,
вы что-то перемудрили в своём коде. Если просто повесить обработчик клика на чекбокс, то всё работает в IE 7-9 и остальных браузерах.

djonA 24.03.2013 22:43

да я вот убрал все не нужно все отлично работает в ie, а вот в firefox'e хоть убей работает со второго раза.

То есть каждый второй клик срабатывает

djonA 24.03.2013 22:45

Я вот повесил просто alert на onclick в checkbox все срабатывает с 1 раза, а вот открытие showInformer(this)

срабатывает в firefox только каждый 2 раз

в ie все отлично с 1 раза

djonA 24.03.2013 22:46

получается проблема где то тут:
function showInformer(element){
        $(element).bt({
            trigger        : 'click',
            positions        :  ['left'],
            contentSelector    : "$('#filter-informer-bt').html()", 
            width        : 'auto',
            fill            : '#f0f0f0',
            strokeWidth    : 1,           
            strokeStyle    : "#06007a",  
            spikeLength    : 10,
            spikeGirth        : 15,
            padding        : 5,
            cornerRadius    : 0,
			cssClass        : 'filter-info',
            closeWhenOthersOpen: true,
            preShow: function(box){
                var pos = $('#filter-div').position();
                var width = $('#filter-div').outerWidth();
                $(box).css({ left: (pos.left - 136) + "px"});

            }
        })
		
		
        
    };

djonA 24.03.2013 23:34

А подскажите как сделать проще вывести слово test слева от checkbox, где ставлю галочку.

<input type="checkbox" onclick="вывести слово test слева на 20 пикселей">



???

djonA 25.03.2013 01:07

Ervin спасибо все разобрался


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