Хранить последний выбранный 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, время: 20:41. |