Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   2 простых вопроса (https://javascript.ru/forum/misc/1592-2-prostykh-voprosa.html)

qsajeal 20.08.2008 16:41

2 простых вопроса
 
1.
Здравствуйте!
Есть функция которая выполняется при OnFocus на элемент форму.
Допустим:

function somefunc (){

//Some actions...


//
//
setTimeout ('somefunc()' ,1000);

}


Эта функция выполняет действия опять и опть каждую секунду пока не перестанет работать скрипт.
Вопрос: как сделать так, чтобы она работала только до того момента когда произойдет событие onBlur c этой формой.
Предполагается что известен id элемента формы.
Заранее спасибо.
2.
У меня есть функция которая посылает запрос в скрипту на сервер.

$.getJSON("admin/js/handler.php", {params1: value, params2: type }, function(obj) {

//Some actions
           );


Если я запускаю эту же функцию из другого файла в другой категории мне нужно другой путь к обработчику писать: js/handler.php (например из папки admin запускаю)
Вопрос: как универсализовать ссылку? (в пхп это легко сделать а в js не знаю как)

Kolyaj 20.08.2008 16:51

1.
var tId;
// Вешается на onFocus
function somefunc (){
  //Some actions...
  tId = setInterval (somefunc ,1000);
}

// Вешается на onBlur
function blur() {
  clearInterval(tId);
}


2. $.getJSON("/admin/js/handler.php"...

Андрей Параничев 20.08.2008 16:56

qsajeal,
1. Вам удобнее воспользоваться setInterval/clearInterval для этой задачи.
Нужно сделать примерно следующее:
<html>
<head>
	<script type="text/javascript">
		// Интервал выполнения функции (не нужно редактировать):
		var funcInterval = null;
		
		function func() {
			// Тут любой код, но он не должен сбивать фокус с textarea!
		}
		
		function startFunc() {
			funcInterval = setInterval(func, 1000);
		}
		
		function stopFunc() {
			clearInterval(funcInterval);
		}
		
	</script>
</head>
<body>
	<form action="">
		<textarea onfocus="startFunc()" onblur="stopFunc()"></textarea>
	</form>
</body>
</html>


2. А абсолютный путь вам не подходит? Адрес текущего сайта хранится в window.location.host, добавляйте его в начало строки а дальше - абсолютный путь.

-- добавлено --
Kolyaj,
Ха, пока писал уже ответили :)

qsajeal (unauth) 20.08.2008 17:16

1- понял. спасибо
2. Как писать мне? Так что ли:
$.getJSON(window.location.host+"admin/js/handler.php", {

Андрей Параничев 20.08.2008 17:47

Как и написал Kolyaj, для абсолютного адреса начиная с домена вам нужно только поставить slash в начале пути. Т.е. $.getJSON("/admin/js/handler.php", ...)


Часовой пояс GMT +3, время: 22:33.