Выделить текст внутри input при получении фокуса
Подскажите, пожалуйста, как сделать выделение всего содержимого input :text, когда он получит фокус? (т.е. после нажатия на какой-то символ - в поле input уже будет этот символ)
|
select( this );
|
Спасибо! получилось сделать $(this).select(). Скажите. пожалуйста, а как сделать обратное действие? Просто у меня такая вот фигня теперь: при фокусировке текст выделяется, но если ничего не изменять, то он так и останется выделенным даже при потере фокуса. Я хочу теперь, чтобы при потере фокуса выделение снималось. Можно ли? Как?
|
select( false );
|
Сделал проверку введенного числа на Float. Проверка выполняется при потере фокуса. Но я не могу фокус вернуть на место. Вот функции:
var input_temp;
function isFloat(value){
var pattern=/^(\d+)[,.]?(\d*)$/;
if (pattern.test(value)){
var result = pattern.exec(value);
if (result[2]=="") return result[1];
else return result[1]+"."+result[2];
}
else return "error";
}
$(function(){
$(":text").focus(function(){ // получение фокуса текстовым полем
input_temp=this.value;
$(this).select();
});
$(":text").blur(function(){ // потеря фокуса текстовым полем
var number=$.trim($(this).val());
if (number=="") this.value=input_temp;
else {
var result=isFloat(number);
if (result!="error")
this.value=result;
else {
alert("Ошибка ввода!");
$(this).select().focus();
return false;
}
}
});
});
Если проверка даже и показывает, что введено не число, то фокус все равно теряется... что делать? |
Никто не сталкивался с таким, да?
|
Я поражаюсь...
function isFloat(value){
var pattern=/^(\d+)[,.]?(\d*)$/;
if (pattern.test(value)){
var result = pattern.exec(value);
if (result[2]=="") return result[1];
else return result[1]+"."+result[2];
}
else return "error";
}
Е*аный стыд, кто ж так делает-то??? Во-первых, если функция названа is-, то логически подразумевается, что возвращает она булево значение. Во-вторых, самый простой код для буля:
function isFloat(value){
return parseFloat(value)!=parseInt(value);
}
А в-третьих, эти ваши сраные jQuery мало чем могут помочь с фокусом. Поставь вместо return false;это:
var t=this;
setTimeout(function f(){t.focus()},0);
|
А как можно выделить не весь текст, а часть?
Есть такой плагин http://www.jankoatwarpspeed.com/post...uery-CSS3.aspx на jQuery, но у него есть один недостаток, который хочется устранить.
Если выделяю какой-то текст с целью скопировать или отредактировать, то всплывающая панель с инструментами не нужна. Я сделал кнопку, которая ее закрывает, но при этом теряется выделение текста.
$(document).ready(function() {
var mouseX = 0;
var mouseY = 0;
$("#abc").mousemove(function(e) {
// получаем координаты курсора мыши
mouseX = e.pageX;
mouseY = e.pageY;
});
$("#abc").mousedown(function() {
$("#menu").fadeOut("1000");
});
$("#abc").select(function() {
// получаем координаты мыши в показанном меню
$("#menu").css("top", mouseY - 5).css("left", mouseX + 10).fadeIn("1000");
});
$("#bold").click(function() {
wrapText("[b]", "[/b]");
$("#menu").fadeOut("1000");
});
$("#italic").click(function() {
wrapText("[i]", "[/i]");
$("#menu").fadeOut("1000");
});
$("#underline").click(function() {
wrapText("[u]", "[/u]");
$("#menu").fadeOut("1000");
});
$("#udar").click(function() {
wrapText("[ud]", "[/ud]");
$("#menu").fadeOut("1000");
});
$("#link").click(function() {
var url = prompt("Введите URL", "http://");
if (url != null)
wrapText("[url=" + url + "]", "[/url]");
$("#menu").fadeOut("1000");
});
$("#close").click(function() {
wrapText("", "");
$("#menu").fadeOut("fast");
});
function wrapText(startText, endText){
// Получаем текст перед выделением
var before = $("#abc").val().substring(0, $("#abc").caret().start);
// Получаем текст после выделения
var after = $("#abc").val().substring($("#abc").caret().end, $("#abc").val().length);
// Объединяем текст перед выделением, измененное выделение и текст после выделения
$("#abc").val(before + startText + $("#abc").caret().text + endText + after);
}
});
Подскажите, пожалуйста, как можно закрыть панельку выделив заново текст между before и after? |
пока ждал помощи нашел вот такое решение: выделять заново, оказывается, не нужно. Достаточно просто вернуть в поле фокус :)
$("#close").click(function() {
$("#menu").fadeOut("fast");
$("#abc").focus();
}
|
JavaScript error: val is not a function
Е*аный стыд, кто ж так делает-то???
Во-во ..Мне можно вот так же объяснить .Я твой язык бы понял))) Подсоби,дружище.вКонтакте слева сверху постоянно в красной рамке такая хрень вылезает Чё сделать-то как убрать это.Я не догоняю чё это,но походу чё-то чую не то чё надо:write: |
| Часовой пояс GMT +3, время: 05:48. |