Javascript и много полей в форме

  • Автор темы Nicolas Prof
  • Дата начала

Nicolas Prof

Guest
Javascript и много полей в форме

Задача такова:
Существует набор-панель HTML тэгов(к примеру как и любого форума панель bbcode, vbcode). По нажатии на какую-либо кнопку с изображением какого-то тэга, происходит вставка текста тэга там где находилась в последний момент каретка. В общем - то тривиальный вопрос. Можно содрать с любого гостевой книги и еще обзовестись мелкой функцией SaveCarret, но теперь самое сложное...:rolleyes:
А в форме -то поле не одно. PHP скрипт генерирует форму в которой может быть от 6 до 25 полей <input type=text>
Единственное что спасает так это то что у всех уникальные id.
 

Nicolas Prof

Guest
specialist
Как написать скрипт который умеет работать с переменным количеством полей в форме,в которые он вставляет, к примеру bbcode(vbcode)?
 

rotoZOOM

ACM maniac
А в чем соссбно проблемы ? Как узнать какое поле активно ? -
document.activeElement (правда для NN не рулит).
Можно предложить такой вариант: при входе в одно из текстовых полей (OnEnter) мы запоминаем указатель на него в глобальной переменной. При вставке bbcode(vbcode) мы вставляем в это активное поле.
 

Nicolas Prof

Guest
rotoZOOM
Спасибо, нужно будет попробовать событие OnEnter.
А в глобальную переменную писать id поля, или покруче, типа textrange делать?
 

rotoZOOM

ACM maniac
Код:
var                     act=NULL;

function enterField (var ac)
{
      act=ac;
}

// вставка символа
function insertCode (var c)
{
       if (act)act.value+="[url]";
}
Это примерно
 

Nicolas Prof

Guest
rotoZOOM
Вот к чему я пришел:
Код:
<html>
<head>
<script language="JavaScript">
var elementID=null;

function findID(eID) { 
var eID;
elementID=eID;
}

function test(){
window.alert(elementID);
}

function insText(text){
var text;
document.forma.elementID.value+=text;
window.alert(text);
}
</script>
</head>
<body>
<form name="forma">
<textarea id="f" name="f" cols="60" rows="10" onfocus="findID(this.id);"></textarea><br>
<textarea id="s" name="s" cols="60" rows="10" onfocus="findID(this.id);"></textarea><br>
<input type="button" onclick="test();" value="TEST">&nbsp;&nbsp;
<input type="button" onclick="insText(':)');" value="Smile">
</form>
</body>
</html>
И появилась проблема. Я так понял из-за того что получаемое ID переменная типа string и ее нельзя втулить.
Короче он ругается
document.forma.elementID is null or not an object
Давно уже думал, как решать эту проблему, то есть именна объектов писать стринговыми переменными. Хотя может я не прав, и здесь совсем в другом проблема.
 

rotoZOOM

ACM maniac
... onfocus="findID(this); ....

function insText(text){
var text;
elementID.value+=text;
window.alert(text);
}

так попробуй ... и убери var eID; из findID
 

Nicolas Prof

Guest
rotoZOOM
Большое спасибо. Оказуется я просто передавал текст this.id, а если this то передается объект.
Большое спасибо еще раз.

P.S.
А события onEnter все таки не существует!;)
 
Сверху