Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   div.click() и input (https://javascript.ru/forum/jquery/34994-div-click-i-input.html)

slavonbl 27.01.2013 15:24

div.click() и input
 
Подскажите как сделать
вот HTML
<div class="size-box-item false-size">38<input type="number" class="hidden" value="0"></div>

вот JS
$(document).ready(function(){
    $(".size-box-item.true-size").click(function(){
        obj = $(this).children();
        if (obj.get(0).value > 0) {
            obj.get(0).value = 0;           
            obj.addClass("hidden");
        }
        else{
            obj.get(0).value = 1;           
            obj.removeClass("hidden");
        }
    });                                         
});

По нажатию на div в нем появляется input type="number", по еще нажатию исчезает. Проблема в том что при использовании input type=number срабатывает событие click, как сделать что бы при изменение значения input описанное выше событие не срабатывало.

рони 27.01.2013 16:12

slavonbl,
Вариант ...
$(document).ready(function(){
   $(".size-box-item").click(function(){
        obj = $(this).children();
        if (obj.get(0).value > 0) {
            obj.get(0).value = 0;
            obj.addClass("hidden");
        }
        else{
            obj.get(0).value = 1;
            obj.removeClass("hidden");
        }
    });
       $(".size-box-item input[type='number']").click(function(event){
  event.stopPropagation();
})
});

mullih 27.01.2013 17:20

расширю чуть ответ рони

stopPropagation() –Останавливает поток событий по дереву элементов, после того как сработали слушатели события для данного элемента

Функции и свойства объекта Event ('Pro jQuery' на smarly.net)

slavonbl 27.01.2013 17:52

Точно.....!!! Спасибо...

Deff 27.01.2013 18:22

<script src="http://code.jquery.com/jquery-latest.js"></script>


<div class="size-box-item false-size">38<input type="number" class="hidden" value="0"> Тут один клик по div или два</div>

<script>
$(document).ready(function(){
        function Mytoggle(){
        obj = $(".size-box-item").find("input");
        var val =1*(Math.abs(obj.val())==0);
        if(!val)obj.addClass("hidden");
        if(val)obj.removeClass("hidden");
        obj.val(val)
        }
    var timerId
    $(".size-box-item").click(function(){
         clearTimeout(timerId);//alert()
         timerId=setTimeout(function (){Mytoggle()},100);
    });
    $(".size-box-item input").click(function(){
        setTimeout(function (){clearTimeout(timerId)},20);
    });        
});
</script>


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