Хранить последний выбранный id
Всем привет, мучаюсь больше недели, уже устал - не получается!!
Грузится страница со множеством id. Когда жму на какой-то id, то он заменяется на поле формы(редактирую данные на странице), ввожу туда данные, жму на enter и всё сохраняется(ajax). Проблема в том, что если нажимать на поля и не "подтверждать" их enter'ом, то они так открытые и остаются. А нужно, чтобы на странице был открыт максимум один id (т.е. последний нажатый), а если нажать мимо (в любое пустое место, где нет никаких id), то открытый id скрывался бы (желательно, чтобы была возможность выполнить какую-то команду с закрывающимся id, например, в поле ввели значение, но не нажали enter(на enter повешена функция), а нажали мимо и функция всё-равно закрепилась. Проблема состоит в том, что id динамические. Ну и знаний мало, но это последний штрих в готовом сайте, и не могу с этим справиться. Помогите! :cray: Заранее спасибо за советы, ссылки и тд. |
Не уверен, что я вас правильно понял, то отправить форму по событию 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> |
Огромное спасибо, работа двинулась с мертвой точки!!
Только нужно немного модифицировать скрипт, и не знаю как: <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"); Очень жду ответ!! Заранее спасибо!! |
grafin, я же вам не спроста привел:
var form = document.forms['form'], input = form.elements[0]; //индекс элемента, это значит, что неважно какой будет идентификатор у поля ввода |
Но у меня нет обрамления <form ...>, я же его убрал. А убрал, потому что у меня подряд идут span со значениями, когда жму и появляется поле, то из одной строчки, получается столбик в 3 строчки, т.к. у формы отступы. Пробовал повесить на форму padding и margin - 0px, не помогает. Решил отказаться от формы, и выводить просто поле.
Вопрос остается: можно ли вообще в данном случае передать id поля и как? |
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 имя |
Хм, попробовал посмотреть, идёт ли реакция, и ничего не движется..
<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> |
<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 |
Спасибо, но так работает, если на странице одно поле с таким названием. У меня формы для каждого значения на странице скрыты, и при нажатии открываются, а другой элемент закрывается. А здесь у всех одинаковый id получается, и обрабатывается только первая форма, которая на странице, остальные "ноль реакции".
Может можно как-то изменить первоначальный скрипт, там оставалось только подставить id, и у меня уже всё работало как надо... |
Цитата:
grafin, о каких id речь и что вообще ты делаешь, расскажи подробнее про задачу... |
Часовой пояс GMT +3, время: 08:03. |