Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2010, 12:17
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Выделить текст внутри input при получении фокуса
Подскажите, пожалуйста, как сделать выделение всего содержимого input :text, когда он получит фокус? (т.е. после нажатия на какой-то символ - в поле input уже будет этот символ)
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2010, 12:42
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

select( this );
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2010, 12:52
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Спасибо! получилось сделать $(this).select(). Скажите. пожалуйста, а как сделать обратное действие? Просто у меня такая вот фигня теперь: при фокусировке текст выделяется, но если ничего не изменять, то он так и останется выделенным даже при потере фокуса. Я хочу теперь, чтобы при потере фокуса выделение снималось. Можно ли? Как?
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2010, 14:04
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

select( false );
__________________
Нет предела совершенству...
Ответить с цитированием
  #5 (permalink)  
Старый 16.08.2010, 16:43
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Сделал проверку введенного числа на 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;
			}
		}
	});
});

Если проверка даже и показывает, что введено не число, то фокус все равно теряется... что делать?

Последний раз редактировалось InviS, 16.08.2010 в 16:47.
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2010, 05:06
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Никто не сталкивался с таким, да?
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2011, 03:42
Интересующийся
Отправить личное сообщение для pashak Посмотреть профиль Найти все сообщения от pashak
 
Регистрация: 08.04.2010
Сообщений: 16

Я поражаюсь...
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);
Ответить с цитированием
  #8 (permalink)  
Старый 25.08.2011, 13:04
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

А как можно выделить не весь текст, а часть?
Есть такой плагин 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?
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2011, 21:16
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

пока ждал помощи нашел вот такое решение: выделять заново, оказывается, не нужно. Достаточно просто вернуть в поле фокус
$("#close").click(function() {
      $("#menu").fadeOut("fast");
      $("#abc").focus();
}

Последний раз редактировалось BETEPAH, 27.08.2011 в 21:48.
Ответить с цитированием
  #10 (permalink)  
Старый 14.10.2011, 11:34
Новичок на форуме
Отправить личное сообщение для vp111 Посмотреть профиль Найти все сообщения от vp111
 
Регистрация: 14.10.2011
Сообщений: 2

JavaScript error: val is not a function
Е*аный стыд, кто ж так делает-то???


Во-во ..Мне можно вот так же объяснить .Я твой язык бы понял))) Подсоби,дружище.вКонтакте слева сверху постоянно в красной рамке такая хрень вылезаетЧё сделать-то как убрать это.Я не догоняю чё это,но походу чё-то чую не то чё надо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56
Передать текст в input при клике на него rolph Общие вопросы Javascript 2 13.04.2010 18:02
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02