powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript действия с select
25 сообщений из 25, страница 1 из 1
JavaScript действия с select
    #38483172
Валисий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!
Возможно, вопрос дурацкий, но это меня уже достало - на протяжении 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
JavaScript действия с select
    #38483190
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте сначала заполнить селект, а потом если id_acn не пусто то что-то типа
$('#select-par').val(id_acn)
...
Рейтинг: 0 / 0
JavaScript действия с select
    #38483194
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валисий,

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

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1061580&msg=15190196 ВалисийА если нужно не на сервере, а на клиенте? Просто интересно, почему не работает так, как надо
...
Рейтинг: 0 / 0
JavaScript действия с select
    #38483234
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валисий,
вообще код мягко говоря "не оптимален".
делается одно и то же, в 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
JavaScript действия с select
    #38483239
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoriaу меня все выбираетсяу него jQuery Mobile по-моему, может в этом причина кривого отображения
...
Рейтинг: 0 / 0
JavaScript действия с select
    #38483240
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валисий пример вполне полноценный, во всяком случае, проблемный участок отражен.
вы считаете, я могу скопировать то что вы привели в качестве примера в новый html-документ,
и запустив локально посмотреть под отладкой, что происходит или нет?

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


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

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

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

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

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

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

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

Код: 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
JavaScript действия с select
    #38487389
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
об этом и был мой пятничный вопрос
...
Рейтинг: 0 / 0
JavaScript действия с select
    #38487433
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и аминь.

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


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