Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX Javascript IE / 13 сообщений из 13, страница 1 из 1
04.10.2012, 12:44
    #37983352
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Здравствуйте. У меня возникла проблема с IE.

Имею на странице tabular form в которой есть select list. При выборе имени из этого select list заполняются поля tabular form. Если пользователь добавляет строчку, то в списке имен выбранное имя не показывается. Я новичок в javascript, написал вот такие вот функции и поставил их на onclick и onchange в select list:
Код: html
1.
onclick="hideN(this)" onchange="hide(this)"


Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
function hide(pName)
{
	var vRow = pName.id.substr(pName.id.indexOf('_')+1); //Get row
	var name = html_GetElement('f01_'+vRow); //Get names select list
	
	
	
	for(var i = 0; i <= selIndex.length; i++)
	{
		if($.inArray(name.selectedIndex, selIndex) == -1)
		{
			selIndex.push(name.selectedIndex);
		}
	}
}

function hideN(pName)
{
	var vRow = pName.id.substr(pName.id.indexOf('_')+1);
	var name = html_GetElement('f01_'+vRow);
	var length = name.length-1;
	if(click != 0)
	{
		for(var i = 0; i < length; i ++)
		{
			name.options[i].style.display = "block";
		}
		for(var i = 0; i < selIndex.length; i++)
		{
			if(i != name.selectedIndex)
			{
				name.options[selIndex[i]].style.display = "none";
			}
		}
	}
	click++;
}



все прекрасно работает в FF и Chrome, но не работает в IE. Притом он не выдает ошибок. Дебаг показал что IE выполняет onclick и при клике на сам контрол и при клике на имя в списке.
Код: javascript
1.
name.options[selIndex[i]].style.display = "none";

не выполняется, то есть дебаг показывает что значение присвоено, но имя не пропадает.

Помогите кто может.
...
Рейтинг: 0 / 0
04.10.2012, 12:51
    #37983373
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Забыл добавить что IE 9.
...
Рейтинг: 0 / 0
04.10.2012, 13:23
    #37983470
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Никто не знает?
...
Рейтинг: 0 / 0
04.10.2012, 14:27
    #37983667
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Daedroth,

А jQuery вам на что?
...
Рейтинг: 0 / 0
04.10.2012, 14:42
    #37983728
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
SvDev,

Не совсем понял вопроса.
...
Рейтинг: 0 / 0
04.10.2012, 14:53
    #37983760
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Daedroth,

Используйте jQuery или миритесь с тем, что не работает то в одном браузере, то в другом.
jQuery не избавит вас от всех проблем, но многих, вы же сами избрали путь, который ведет к таким ситуациям...
...
Рейтинг: 0 / 0
04.10.2012, 14:56
    #37983768
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
SvDevвы же сами избрали путь, который ведет к таким ситуациям...
Эх... Если бы я избирал пути... Я бы вообще апексом не работал бы.
Большое спасибо за ответ, буду рыть jQuery
...
Рейтинг: 0 / 0
04.10.2012, 17:07
    #37984135
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Daedroth
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function hide(pName)
{
	var vRow = pName.id.substr(pName.id.indexOf('_')+1); //Get row
	var name = html_GetElement('f01_'+vRow); //Get names select list
	
	
	
	for(var i = 0; i <= selIndex.length; i++)
	{
		if($.inArray(name.selectedIndex, selIndex) == -1)
		{
			selIndex.push(name.selectedIndex);
		}
	}
}



Выделенное -- лишнее. Скажу больше, вместо двух функций вполне хватило бы одной, которая срабатывает на change.

Даже с использованием jQuery спрятать option в IE не получится. Единственный выход -- удалять их. Это сработает в любом браузере.
...
Рейтинг: 0 / 0
04.10.2012, 17:11
    #37984151
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
suPPLerЕдинственный выход -- удалять их. Это сработает в любом браузере.

Ещё можно попробовать заворачивать в span и прятать уже обёртку. Или устанавливать атрибут disabled. Но эти подходы на кроссбраузерность я не проверял.
...
Рейтинг: 0 / 0
04.10.2012, 18:45
    #37984345
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
...
Рейтинг: 0 / 0
04.10.2012, 18:46
    #37984347
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
SvDevПри м еры через jQuery
...
Рейтинг: 0 / 0
04.10.2012, 20:59
    #37984477
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
Daedroth,

Возможно пример не очень удачный, я к тому, что suPPLer правильно говорит, но это не отменяет необходимость использования jQuery, Потом еще 100 раз натолкнетесь на эти грабли, я, например, даже код подобный вашему разбирать не стану. И уж тем более со словами не работает в браузере!
...
Рейтинг: 0 / 0
05.10.2012, 11:40
    #37985075
Daedroth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX Javascript IE
SvDev,

Большое спасибо за помощь.

Будем думать дальше.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX Javascript IE / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]