[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: передача в функцию
maximka787
Ребят, помогите кто знает как передать имя и значение в функцию а также вернуть их обратно. Вот код начальный. у меня около 40 таких полей. я хочу сделать функцию, но не могу.
<input type="text" name="11" value="value1" 
onfocus="if (this.value=='value1') this.value='';" onblur="if (this.value==''){this.value='value1'}" />
<input
type="text" name="22" value="value2"
onfocus="if (this.value=='value2') this.value='';" onblur="if (this.value==''){this.value='value2'}" />

Вот недоделанный вариант, как я хочу, но запутался с this.value
<script language="javascript">
function
m_onfocus(mm){
var myelement = document.getElementByname(mm).value;
if(this.value=='value1') { this.value=''; }
}

function m_onblur(mm){
if (this.value==''){ this.value='value1'; }
}

</script>
<input
type="text" name="11" value="value1"
onfocus="m_onfocus(this.value)" onblur="m_onblur(this.value)" />

<input
type="text" name="22" value="value2"
onfocus="m_onfocus(this.value)" onblur="m_onblur(this.value)" />





Спустя 13 минут, 35 секунд (7.10.2011 - 13:06) ApuktaChehov написал(а):
Совершенно непонятно, что вы хотите сделать. Объясните лучше.

Спустя 5 минут, 56 секунд (7.10.2011 - 13:12) maximka787 написал(а):
ApuktaChehov
мне надо чтобы при нажатии на поле текстовое исчезала надпись. Сейчас вот так сделано
<input type="text" name="11" value="введите телефон" 
onfocus="if (this.value=='введите телефон') this.value='';" />

Я даже урезал задачу в половину чтоб ясней было. можно ли пустить это через функцию? тк у меня будет много полей таких и функция справится лучше чем вписывать везде
value="введите телефон" ... if (this.value=='введите телефон') this.value='';"
value="введите карту" ... if (this.value=='введите карту') this.value='';"
и тд

Кстати реализация очистки поля нужна именно такая, иначе я не додумаю сам вторую часть :)

Спустя 31 минута, 36 секунд (7.10.2011 - 13:44) ApuktaChehov написал(а):
function chInputVal(obj, event) {

//Событие
var evn = (event)? event : window.event;

if(evn.type == 'focus' && obj.value == '' || obj.value == 'Введите телефон')
obj.value = '';

if(evn.type == 'blur' && obj.value == '')
obj.value = 'Введите телефон';
}


<input type="text" value="Введите телефон" onfocus="asd(this, event);" onblur="asd(this, event);"/>

Спустя 4 минуты, 54 секунды (7.10.2011 - 13:49) maximka787 написал(а):
ApuktaChehov
спасибо, много непонятного, тк слабо знаю js
У тебя в самой функции есть "Введите телефон"

у меня задача при нажатии на любое поле text прочитать текущее значение value и если это значение совпадет с первоначальным (value="") то чтоб оно исчезло.

Спустя 1 минута, 9 секунд (7.10.2011 - 13:50) ApuktaChehov написал(а):
щас 1 мин.

Спустя 1 минута, 37 секунд (7.10.2011 - 13:51) maximka787 написал(а):
ApuktaChehov
по твоему примеру надо еще и 3й параметр передать это само значение.
Кстати благодаря event уберется вторая функция. я смогу передавать даже событие. этого я не знал)

Спустя 5 минут, 2 секунды (7.10.2011 - 13:56) ApuktaChehov написал(а):
Ну вот типа этого ;)

function chInputVal(obj, event, text) {

//Событие
var evn = (event)? event : window.event;

if(evn.type == 'focus' && obj.value == '' || obj.value == text)
obj.value = '';

if(evn.type == 'blur' && obj.value == '')
obj.value = text;
}


<input type="text" value="Введите телефон" onfocus="chInputVal(this, event, 'Введите телефон');" onblur="chInputVal(this, event, 'Введите телефон');"/>

Спустя 55 секунд (7.10.2011 - 13:57) ApuktaChehov написал(а):
ща еще на ООП наковыряю, самому стало интересно. Если сочту достойным - выложу laugh.gif

Спустя 3 минуты, 39 секунд (7.10.2011 - 14:01) maximka787 написал(а):
ApuktaChehov
Твоя функция супер, сейчас попробую.

конечно выкладывай, а такой вопрос: можно не передавать само значение value через функцию? ну чтобы функция сама считывала value="" ?
Что-то, типо того
chInputVal(this, event, this.value);"

Спустя 1 минута, 42 секунды (7.10.2011 - 14:03) ApuktaChehov написал(а):
нет. Валуе меняется, а нам надо, чтобы где-то хранилось самое первое, что было в поле. Тут два варианта, ООП или глобальные переменные.

Иначе как определить очищать поле или нет?

Спустя 2 минуты, 30 секунд (7.10.2011 - 14:05) maximka787 написал(а):
ApuktaChehov
точно, спасибо тебе. как всегда буду подтягивать знания)

Спустя 1 час, 3 минуты, 33 секунды (7.10.2011 - 15:09) ApuktaChehov написал(а):
Ну вот. Сделал симбиоз глобальных переменных и классов. Хотя можно было сделать все на уровне классов, но честно говоря, копаться в лом.
//Класс обработки input
var chInputVal = function() {

//Функция сменя значения input
this.chVal = function(obj, event) {

//Событие
var evn = (event)? event : window.event;

//Условие при котором поле очищается
if(evn.type == 'focus' && obj.value == '' || obj.value == this.old_val)
obj.value = '';

//Условие при котором в поле возвращается старое значение
if(evn.type == 'blur' && obj.value == '')
obj.value = this.old_val;
}
}


function chVal(obj, event){
var id = obj.id; //id текущего input

//Если экземпляр класса еще не создан, создаем его
//и определяем переменную с первым значением input

if(eval('typeof chInputVal_'+ id) == 'undefined') {
eval('chInputVal_'+ id +'= new chInputVal();');
eval('chInputVal_'+ id +'.old_val =\''+ obj.value +'\'');
}

//Запускаем функцию смены значения input
eval('chInputVal_'+ id +'.chVal(obj, event);');
}

<input type="text" value="Введите Адрес" id="a1" onfocus="chVal(this, event);" onblur="chVal(this, event);"/>
<input
type="text" value="Введите телефон" id="a2" onfocus="chVal(this, event);" onblur="chVal(this, event);"/>
<input
type="text" value="Введите icq" id="a3" onfocus="chVal(this, event);" onblur="chVal(this, event);"/>

Спустя 28 минут, 4 секунды (7.10.2011 - 15:37) moskitos80 написал(а):
ApuktaChehov
Цитата
Ну вот. Сделал симбиоз глобальных переменных и классов.
?!? ohmy.gif
Имхо: eval - зло! user posted image - нельзя показывать его начинающему.

Спустя 6 минут, 32 секунды (7.10.2011 - 15:43) ApuktaChehov написал(а):
moskitos80 - думаю, что в данном контексте, вполне приемлемо, а так да.
maximka787 забудьте про евал и ни в коем случае не смотрите код выше!
А если вы его уже посмотрели, то нужно срочно уходить в запой на месяцок что бы навсегда забыть все это.laugh.gif


А про симбиоз.. Я вообще хотел сделать класс, в которые будут динамически добавляться методы отвечающие за обработку каждого inputa в документе.
А потом меня работой завили и я плюнул на это дело. wink.gif

P.S. так что не судите строго, я все это "на коленке" собрал написал.


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.