2012-04-20 2 views
1

Когда я использовал событие размытия из поля ввода, оно включает в себя всю страницу, но также кнопку отправки. Итак, как избежать того, что событие размытия не включает кнопку отправки?Событие размытия также включает кнопку отправки/jquery

Вот HTML код:

<form> 
    <input type="text" value="EMAIL ADDRESS_" id="text" /> 
    <input type="submit" val="" id="submit" /> 
</form> 

и сценарий:

$('form input[type!=submit]').focus(function(){ 
    $(this).val(""); 
    }); 
$('form input[type!=submit]').blur(function(){ 
    if(this.value==""){ 
    $(this).val("EMAIL ADDRESS_"); 
    } 
}); 

Я беру этот код из моего предыдущего вопроса, но это не work.Blur события до сих пор включает в себя кнопку

представить
+1

Если все, что вы делаете, это обновление заполнитель в текстовом поле, и если вы используете HTML5, вы должны использовать атрибут 'placeholder' так указывает этот текст. – jasonmerino

ответ

1

Я думаю, вместо того, чтобы избегать одного поля из выбора, вам лучше указать элементы, которые нужно учитывать для выбора. В противном случае, если кто-то/вы, в будущем, может добавить новый элемент в форму, и вам может быть интересно, где это поведение (размытия и фокуса) исходит из «только что добавленного элемента»!

$(function(){ 
$("form input[type='text']").focus(function(){ 
     $(this).val(""); 
    }); 
$("form input[type='text']").blur(function(){ 
    if(this.value==""){ 
     $(this).val("EMAIL ADDRESS_"); 
     } 
    }); 
}); 

Обратите внимание, что вы по-прежнему ориентации все поля ввода, который является тип текста. Поэтому, если это возможно, попробуйте сделать его более конкретным, применив имя класса к этим элементам и используя его как селектор. Или вы можете использовать id элемента.

$("form #yourElemntId").focus(function(){ 
    //do stuff 
}); 
+0

Это ответ, который мне нужен, tnx. – user1288338

+0

@ user1288338: Рад, что это вам помогло. – Shyju

+0

Я думаю, что это решение тоже хорошо: вар SetTimer =. {Таймер: нулевой} $ ('ввод, выберите') размытие (функция() { setTimer.timer = SetTimeout (функция() { $ (» #text '). val (' текст '); }, 200); }); $ ('вход, выберите') фокус (функция() { setTimer.timer = SetTimeout (функция() { $ ('# текст') знач ('');.. }, 200); }); $ ("# submit"). Click (function() { clearTimeout (setTimer.timer); // сделать что-то }); – user1288338

0

Ваше решение почти хорошо, вы просто не хватает цитаты между submit

$("form input[type!='submit']").focus(function(){ 
    $(this).val(""); 
    }); 
$("form input[type!='submit']").blur(function(){ 
    if(this.value==""){ 
    $(this).val("EMAIL ADDRESS_"); 
    } 
}); 
+0

tnx, я ценю, что вы отвечаете – user1288338