Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript действия с select / 25 сообщений из 25, страница 1 из 1
29.11.2013, 12:53
    #38483172
Валисий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Всем добрый день!
Возможно, вопрос дурацкий, но это меня уже достало - на протяжении 3 дней не могу решить проблему. Суть проблемы: есть страница page1, на которой пользователь выбирает режим работы. Оттуда - переход на page2, в url-е передается некоторое значение (id). На page2 есть выпадающий список, который заполняется динамически из json-файла. И вот после перехода, если id в url-е не равно null, необходимо поставить в select выбранным значением одно значение из списка (пишу путано, но ниже будет код, который ситуацию прояснит). Проблема в том, что в самом селекте (в строчке) не отображается выбранное значение - просто пустая строчка, но оно тем не менее выбрано. Как проблем порешать?
Вот обещанный код:
Код: 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.
38.
39.
40.
//функция, которая вытаскивает из url-а нужный параметр, работает корректно.
		function get(n){ 
			a=window.location.toString(); 
			a="&"+a.substring(a.indexOf("?")+1);
			p=a.indexOf("&"+n+"="); 
			a=p==-1?'':a.substring(p+n.length+2); 
			return a.indexOf("&")>=0?a.substring(0,a.indexOf("&")):a;
		}
			
		$(document).ready(function () {  
			xhttp=new XMLHttpRequest();
			xhttp.open('GET','acn_list.json',true);
			xhttp.send();
			xhttp.onreadystatechange=function(){
			if (xhttp.readyState==4){
				var json=eval( '('+xhttp.responseText+')' );

				var id_acn=get('acn_num'); //вводим переменную, которой присваиваем значение из url
				if (id_acn=='null') //если значение равно null, нам не нужно, чтобы что- то было выбрано по умолчанию
				{
					$('#select-par').append($('<option value="0" selected disabled>Параметр:</option>'));
					for (var i=0; i<json.acn_list.length; i++) {
						$('#select-par').append($('<option value="'+json.acn_list[i].acn_n+'">'+json.acn_list[i].acn_n+'</option>')); 
					}
				}
				else //в противном случае, нужно заполнитьь список из того же json, и выбранным по умолчанию поставить 
//такое значение, параметр acn_id которого равен acn_num, полученному из url-a
				{
					$('#select-par').append($('<option value="0" disabled>Параметр:</option>'));
					for (var i=0; i<json.acn_list.length; i++) {
						if (json.acn_list[i].acn_id==id_acn)
						$('#select-par').append($('<option value="'+json.acn_list[i].acn_n+'" selected>'+json.acn_list[i].acn_n+'</option>'));
						else $('#select-par').append($('<option value="'+json.acn_list[i].acn_n+'">'+json.acn_list[i].acn_n+'</option>'));
					}
				}
				$("#select-par").listview("refresh"); 
	
			}
			}
		})


Все отбрабатывает нормально, в консоли ошибок нет, но вот отображается некорректно. Если в URLе значение acn_num не null, то в строчке select (самом виджете) - пусто, и то значение из списка, которое выбрано в скрипте, не выбирается - кликнуть по нему невозможно, т.к. оно вроде бы уже выбрано. Опять же, объяснил коряво, но может кто-то уже с подобным сталкивался.
...
Рейтинг: 0 / 0
29.11.2013, 13:01
    #38483190
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
попробуйте сначала заполнить селект, а потом если id_acn не пусто то что-то типа
$('#select-par').val(id_acn)
...
Рейтинг: 0 / 0
29.11.2013, 13:06
    #38483194
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисий,

а что пример полноценный за 3 дня нельзя было сделать?
...
Рейтинг: 0 / 0
29.11.2013, 13:07
    #38483196
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
да я вообще ему несколько дней назад рекомендовал делать это на сервере, но он почему-то отмахнулся от моего совета
...
Рейтинг: 0 / 0
29.11.2013, 13:17
    #38483214
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Паганельда я вообще ему несколько дней назад рекомендовал делать это на сервере, но он почему-то отмахнулся от моего совета
наверное json круче котируется :)
...
Рейтинг: 0 / 0
29.11.2013, 13:25
    #38483224
Валисий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Паганель, спасибо. Будем пробовать. По поводу сервера: на сервере сделать не могу, что уже говорилось.
По поводу примера: по-моему, пример вполне полноценный, во всяком случае, проблемный участок отражен.
...
Рейтинг: 0 / 0
29.11.2013, 13:25
    #38483225
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Zoriaнаверное json круче котируется :)
json он то же разный бывает!
...
Рейтинг: 0 / 0
29.11.2013, 13:30
    #38483231
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисийна сервере сделать не могу, что уже говорилосьдааа, говорилось

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1061580&msg=15190196 ВалисийА если нужно не на сервере, а на клиенте? Просто интересно, почему не работает так, как надо
...
Рейтинг: 0 / 0
29.11.2013, 13:32
    #38483234
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисий,
вообще код мягко говоря "не оптимален".
делается одно и то же, в 5ти а то и больше вариантах....
у меня все выбирается, если получится, переделайте пример так чтобы он демонстрировал проблему:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
    <select id="select-par"></select>
    <script>
        $(document).ready(function () {
             var sel = $("#select-par");
             var id_acn = 5; // = null; =3; 
 	if(id_acn==null) id_acn = 0; 	
             sel.append($('<option value="0" disabled>Параметр:</option>'));
             for(i=1; i<10;i++)
             {              
                 sel.append($('<option value="'+i+ '">' + i+ '</option>'));
             }
             if(id_acn!=null) sel.val(id_acn);
        })
    </script>
</body>
...
Рейтинг: 0 / 0
29.11.2013, 13:33
    #38483239
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Zoriaу меня все выбираетсяу него jQuery Mobile по-моему, может в этом причина кривого отображения
...
Рейтинг: 0 / 0
29.11.2013, 13:34
    #38483240
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисий пример вполне полноценный, во всяком случае, проблемный участок отражен.
вы считаете, я могу скопировать то что вы привели в качестве примера в новый html-документ,
и запустив локально посмотреть под отладкой, что происходит или нет?

я - так не считаю
...
Рейтинг: 0 / 0
29.11.2013, 13:35
    #38483246
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Паганельу него jQuery Mobile по-моему, может в этом причина кривого отображения
ух ты, у меня по пятницам телепатика отключена ..
...
Рейтинг: 0 / 0
29.11.2013, 13:36
    #38483247
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
...
Рейтинг: 0 / 0
29.11.2013, 13:42
    #38483256
Валисий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
refresh тут не помогает. попробовал следующее:
Код: javascript
1.
$('#select-par option:selected').text(json.acn_list[i].acn_n);


не помогает. Грубо говоря, нужно задать текст выбранного элемента.
...
Рейтинг: 0 / 0
29.11.2013, 13:43
    #38483258
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисийrefresh тут не помогаетя имел в виду может он мешает

+1 к требованию полноценного примера, который можно было бы в действии увидеть
...
Рейтинг: 0 / 0
29.11.2013, 13:49
    #38483266
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Паганель,

а зачем он тут вообще *(я упустила за ненадобностью),
какое отношение имеет листвью к селекту автора?
...
Рейтинг: 0 / 0
29.11.2013, 13:50
    #38483268
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
а это пусть автор сам объяснит зачем он написалВалисий
Код: javascript
1.
				$("#select-par").listview("refresh"); 

или может это какой-то другой листвью, не тот что в jqm...
...
Рейтинг: 0 / 0
29.11.2013, 15:43
    #38483537
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Паганельа это пусть автор сам объяснит зачем он написалВалисий
Код: javascript
1.
				$("#select-par").listview("refresh"); 

или может это какой-то другой листвью, не тот что в jqm...
и не выиграл а проиграл.. :)

Дорогой автор, мы тут не поленились, почитали, подумали, сделали пример, не поленитесь, ответьте жаждающим вам помочь?:)
...
Рейтинг: 0 / 0
29.11.2013, 19:02
    #38483983
Валисий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
1) по поводу примера: ту информацию, которую могу (имею право) предоставить - я предоставил. если чего-то не хватает, прошу сказать, чего конкретно. Источников данных (json-файлов) здесь не будет - не имею права выложить. Извините. Если Вы имеете в виду что-то другое, скажите что конкретно. Если нужен html-файл, ниже представлен фрагмент, имеющий к этому отношение.
2) по поводу refresh: пробовал, вдруг да поможет. Не судьба.
3) у меня действительно jQuery Mobile, и проблема, скорее всго, связана с виджетами jQuery.

Код: html
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.
<body> 

<div data-role="page" id="page3" data-theme="b">
        <div data-role="header" data-position="fixed" data-tap-toggle="false" data-theme='b'>

			  <a href="sg_android.htm" data-ajax="false"><i class='icon-angle-left'></i></a>
              <h2>Новый</h2>
        </div>

 <div data-role="content"> 
<form action="forms-results.php" method="post"> 
 <fieldset> 
  <div data-role="fieldcontain">
   <label for="select-par" class="select">Параметр:</label>
    <select name="select-param" id="select-par">
    </select>
   </div>
 <!-- здесь еще несколько элементов формы, к проблеме не относятся -->   
  <br>
  <br>
  <button type="submit">Отправить</button> 
 </fieldset> 
</form>

 <br>
 </div>
 <div data-role="footer">
  <h1>FOOTER</h1>
 </div>
</div>

</body>
...
Рейтинг: 0 / 0
29.11.2013, 19:06
    #38483990
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
а можно мне для моего общего развития узнать - разве листвью работает и с селектами? я чето думал что только со списками
...
Рейтинг: 0 / 0
29.11.2013, 20:56
    #38484093
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Валисий1) по поводу примера: ту информацию, которую могу (имею право) предоставить - я предоставил. если чего-то не хватает, прошу сказать, чего конкретно. Источников данных (json-файлов) здесь не будет - не имею права выложить. Извините. Если Вы имеете в виду что-то другое, скажите что конкретно. Если нужен html-файл, ниже представлен фрагмент, имеющий к этому отношение.
2) по поводу refresh: пробовал, вдруг да поможет. Не судьба.
3) у меня действительно jQuery Mobile, и проблема, скорее всго, связана с виджетами jQuery.

да мне даром не нужна ваша секретная инфа. я вам привела пример полноценный. если вы не видите разницы.... у вас ни используемый яваскрипт не указан, ни форма зачем мне ваша php, ни откуда бы ваш селект заполняется - делается пример возвращающий список "думми" данных-за 2 минуты - я даже это за вас сделала.
учитесь абстрагироваться от "Источников данных (json-файлов) " и "виджетов", тогда будет легче идти к проблемному месту*(тем более, если данные по вашим словам возвращаются) .
вы мой пример смотрели? работает? начали изменять под ваши условия шаг за шагом меняя и тестируя тут же, чтобы увидеть, на каком месте прокол..? не похоже на то.
...
Рейтинг: 0 / 0
29.11.2013, 20:57
    #38484096
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
пс.
иначе телепатов ждать. даже у меня бывает, иногда выдается свободный час на телепатирование...
...
Рейтинг: 0 / 0
03.12.2013, 14:12
    #38487386
Валисий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
Всем спасибо. Проблема решена. Кому интересно, привожу код:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   if (id_acn!='null')
  {
      for (var i=0; i<json.acn_list.length; i++) {
         if (json.acn_list[i].acn_id==id_acn)
         {
             var text = json.acn_list[i].acn_n;
             $('#select-par').append($('<option selected value="'+json.acn_list[i].acn_n+'">'+json.acn_list[i].acn_n+'</option>')); 
         }
         else
         {
            $('#select-par').append($('<option value="'+json.acn_list[i].acn_n+'">'+json.acn_list[i].acn_n+'</option>')); 
          }
      }
   }
   else
   {
      $('#select-par').append($('<option selected disabled value="0">Параметр:</option>')); 
      for (var i=0; i<json.acn_list.length; i++) {
         $('#select-par').append($('<option value="'+json.acn_list[i].acn_n+'">'+json.acn_list[i].acn_n+'</option>')); 
      }
   }
$('#select-par').selectmenu('refresh', true);



И надо было всего-то добавить последнюю строчку.
...
Рейтинг: 0 / 0
03.12.2013, 14:14
    #38487389
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
об этом и был мой пятничный вопрос
...
Рейтинг: 0 / 0
03.12.2013, 14:32
    #38487433
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript действия с select
и аминь.

а код аки был ужасен, таки остался....
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript действия с select / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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