Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.01.2011, 00:54
Новичок на форуме
Отправить личное сообщение для grafin Посмотреть профиль Найти все сообщения от grafin
 
Регистрация: 08.01.2011
Сообщений: 6

Хранить последний выбранный id
Всем привет, мучаюсь больше недели, уже устал - не получается!!

Грузится страница со множеством id. Когда жму на какой-то id, то он заменяется на поле формы(редактирую данные на странице), ввожу туда данные, жму на enter и всё сохраняется(ajax). Проблема в том, что если нажимать на поля и не "подтверждать" их enter'ом, то они так открытые и остаются. А нужно, чтобы на странице был открыт максимум один id (т.е. последний нажатый), а если нажать мимо (в любое пустое место, где нет никаких id), то открытый id скрывался бы (желательно, чтобы была возможность выполнить какую-то команду с закрывающимся id, например, в поле ввели значение, но не нажали enter(на enter повешена функция), а нажали мимо и функция всё-равно закрепилась.

Проблема состоит в том, что id динамические. Ну и знаний мало, но это последний штрих в готовом сайте, и не могу с этим справиться.

Помогите!
Заранее спасибо за советы, ссылки и тд.
Ответить с цитированием
  #2 (permalink)  
Старый 08.01.2011, 01:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Не уверен, что я вас правильно понял, то отправить форму по событию onblur можно так:

<script type="text/javascript">
window.onload = function(){
    var form = document.forms['form'], input = form.elements[0];
    
    input.onfocus = function(){
        this.value = '';
    };
    
    input.onblur = function(){
        this.value == '' && form.submit();
        document.write('форма отправлена!');
    };
};
</script>

<form name="form" action="" method="post">
    <input type="text" value="click" />
</form>
Ответить с цитированием
  #3 (permalink)  
Старый 08.01.2011, 14:10
Новичок на форуме
Отправить личное сообщение для grafin Посмотреть профиль Найти все сообщения от grafin
 
Регистрация: 08.01.2011
Сообщений: 6

Огромное спасибо, работа двинулась с мертвой точки!!

Только нужно немного модифицировать скрипт, и не знаю как:
<script type="text/javascript">
window.onload = function(){
    var input = document.getElementById("gg");
    
    input.onfocus = function(){
        this.value = '';
    };
    
    input.onblur = function(){
        this.value == '' && form.submit();
        document.write('форма отправлена!');
    };
};
</script>


    <input id="gg" type="text" value="click" />


У меня просто поле, без обрамления form, т.к. съезжает дизайн. Основываюсь на id. Значение id у каждого поля разное (зависит от id в БД mysql). Как так сделать, чтобы это самое "gg", если оно будет "gg2", "gg84848484" и т.д. автоматически вставлялось в var input = document.getElementById("gg");

Очень жду ответ!! Заранее спасибо!!
Ответить с цитированием
  #4 (permalink)  
Старый 08.01.2011, 14:38
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

grafin, я же вам не спроста привел:
var form = document.forms['form'], input = form.elements[0]; //индекс элемента, это значит, что неважно какой будет идентификатор у поля ввода
Ответить с цитированием
  #5 (permalink)  
Старый 08.01.2011, 16:42
Новичок на форуме
Отправить личное сообщение для grafin Посмотреть профиль Найти все сообщения от grafin
 
Регистрация: 08.01.2011
Сообщений: 6

Но у меня нет обрамления <form ...>, я же его убрал. А убрал, потому что у меня подряд идут span со значениями, когда жму и появляется поле, то из одной строчки, получается столбик в 3 строчки, т.к. у формы отступы. Пробовал повесить на форму padding и margin - 0px, не помогает. Решил отказаться от формы, и выводить просто поле.

Вопрос остается: можно ли вообще в данном случае передать id поля и как?
Ответить с цитированием
  #6 (permalink)  
Старый 08.01.2011, 17:13
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

grafin
1. по-умолчанию (на сколько я помню) у элемента form вообще нет никаких предопределенных стилей.
2. оберните input любым элементом.

document.getElementById("div").getElementsByTagName('input')[0].onblur = function(){
       request.send(urlEncodeData(data)); //тут вызываем функцию отправки данных на сервер
};

<div id="div"><input type="text" value="click" /></div>

в это случае можно вообще не назначать элементу input имя

Последний раз редактировалось monolithed, 08.01.2011 в 17:16.
Ответить с цитированием
  #7 (permalink)  
Старый 08.01.2011, 17:46
Новичок на форуме
Отправить личное сообщение для grafin Посмотреть профиль Найти все сообщения от grafin
 
Регистрация: 08.01.2011
Сообщений: 6

Хм, попробовал посмотреть, идёт ли реакция, и ничего не движется..

<script language="javascript" type="text/javascript">
document.getElementById("div").getElementsByTagName('input')[0].onblur = function(){
       //request.send(urlEncodeData(data)); //тут вызываем функцию отправки данных на сервер
	   alert('result');
};
</script>
<div id="div"><input type="text" value="click" /></div>
Ответить с цитированием
  #8 (permalink)  
Старый 08.01.2011, 17:51
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<div id="div"><input type="text" value="click" /></div>
<script type="text/javascript">
document.getElementById("div").getElementsByTagName('input')[0].onblur = function(){
	   alert('result');
};
</script>


либо использовать onload / DOMContentLoaded
Ответить с цитированием
  #9 (permalink)  
Старый 08.01.2011, 18:45
Новичок на форуме
Отправить личное сообщение для grafin Посмотреть профиль Найти все сообщения от grafin
 
Регистрация: 08.01.2011
Сообщений: 6

Спасибо, но так работает, если на странице одно поле с таким названием. У меня формы для каждого значения на странице скрыты, и при нажатии открываются, а другой элемент закрывается. А здесь у всех одинаковый id получается, и обрабатывается только первая форма, которая на странице, остальные "ноль реакции".

Может можно как-то изменить первоначальный скрипт, там оставалось только подставить id, и у меня уже всё работало как надо...

Последний раз редактировалось grafin, 08.01.2011 в 18:57.
Ответить с цитированием
  #10 (permalink)  
Старый 08.01.2011, 19:10
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от monolithed
1. по-умолчанию (на сколько я помню) у элемента form вообще нет никаких предопределенных стилей.
в ie7, например, есть. Просто форма тут не нужна. Да и к input'ам по id можно обращаться

grafin, о каких id речь и что вообще ты делаешь, расскажи подробнее про задачу...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранить параметр в странице Mutagena Общие вопросы Javascript 2 11.07.2010 21:03
Хранить параметр в странице Mutagena jQuery 1 11.07.2010 20:11
Как получить последний день месяца Casufi Общие вопросы Javascript 4 13.04.2010 13:43
Как удалить последний символ строки? PAMAC Events/DOM/Window 5 18.10.2009 15:01
Dojo может подгружать информацию из пунктов меню только при клике на выбранный пункт? vlad275 Dojo toolkit 0 30.10.2008 15:56