Вы должны сами настроить свое поле, чтобы иметь прослушиватель .focus()
, а не перенос <form>
.
$('#new_wall').focus( function(){
$("#send_button").fadeIn(400);
});
$('#new_wall').blur( function(){
$("#send_button").fadeOut(400);
});
Размытие должно работать на поле. Вы не можете «расфокусировать» что-то, что не может иметь фокус (например, <a>
или <input>
).
Пример: http://jsfiddle.net/7p77p/
Я не знаю, что вы пытаетесь сделать со своим полем, когда кто-то "щелкает" по форме (а не по общему взаимодействию с формой), поэтому я пока проигнорирую это. Однако ваше поле должно содержать события фокусировки и размытия, а ваша кнопка должна отвечать тем же.
Редактировать: Основано на глупой оплошности с моей стороны.
Тогда я бы поступил так:
$('#new_wall').focus( function(){
$("#send_button").fadeIn(400); // Button shows on focus
// Create a temporary listener on the body to let someone 'click off'
$('body').on('click.send_button_showing', function(){
// User clicks off, button fades out, loses event, and body loses event
$('#send_button').fadeOut(400);
$('#send_button').off('click.send_button_click');
$('body').off('click.send_button_showing');
});
// Create temporary event that stops bubbling of the body click
// with .stopPropagation()
$('#send_button').on( 'click.send_button_click', function(e){
e.stopPropagation();
// Do your send button actions
});
});