2013-05-29 2 views
0

Вот jsfiddle: http://jsfiddle.net/nGpmP/OnClick событие на исчезающий элемент

При нажатии на этот вход, появляется кнопка справа. Эта кнопка имеет событие onclick();. Проблема в том, что это событие не срабатывает, поскольку, когда вы нажимаете на кнопку, оно исчезает (и вход теряется), а javascript не запускается. Как я могу это сделать, чтобы этот javascript был выполнен?

+1

Живые примеры полезны, но вопросы по Stackoverflow должны быть полными сами по себе. См. Также: [Что-то на моем веб-сайте не работает. Могу ли я просто вставить ссылку на него?] (Http://meta.stackexchange.com/questions/125997/something-on-my-web-site-doesnt-work-can-i-just-paste-a-link -to-it) – Quentin

+0

@Quentin: SO должен просто купить jsfiddle и интегрировать его. В любом случае все это используют ... – ojek

ответ

2
.buttonInput input:not(:focus) ~ .buttonIcon { 
    display: none; 
} 

становится

.buttonInput .buttonIcon { 
    display: none; 
} 

и

.buttonInput input:active ~ .buttonIcon { 
    display: inline-block; 
} 

становится

.buttonInput .buttonIcon:active { 
    display: inline-block; 
} 

Таким образом, кнопка не исчезает, пока вы ее не щелкнете.

http://jsfiddle.net/7uFVS/1/

2

Не используйте селектор фокусировки CSS, чтобы скрыть/показать кнопку, а скорее скрыть кнопку с помощью JavaScript onBlur. Используя объект события, который указан в качестве первого аргумента методу onBlur, вы можете проверить, является ли атрибут «target» кнопкой - если да, очистите узел. В качестве альтернативы вы можете использовать setTimout() с низким значением, например, 50, прежде чем скрывать кнопку, тем самым позволяя щелчку стрелять до того, как кнопка будет скрыта.

+0

Проблема в том, что я хочу использовать как можно меньше js ... :) Но спасибо за ввод! – ojek

3

Используйте событие mousedown на кнопке «button», так как щелчок запускается слишком поздно.

$(document).on('mousedown', '.buttonIcon', function() { 
    $(this).prev('input').val(''); 
}); 

jsFiddle example

+0

Да, я подумал об этом, но я хотел использовать «onclick(); на этот раз ... http://i.imgur.com/2gHIc1J.png В любом случае спасибо. :) – ojek

0

Я сделал несколько изменений в jsfeedle. Добавлены некоторые функции идентификаторов и 2 JQuery

<div class="buttonInput"> 
    <input id="inputbox" type="text" placeholder="Status..."/> 
    <div id="clearBtn" class="buttonIcon" onclick="ClearInput(this);">BTN</div> 
</div> 
<script> 
    $('#inputbox').click(function(){ 
     $('.buttonIcon').css('display','block'); 
    }); 

    $('#clearBtn').click(function(){ 
     $('#inputbox').val(' '); 
    }); 
</script> 

http://jsfiddle.net/Qpd6V/

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