Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Передача переменной в плагин по change() (https://javascript.ru/forum/jquery/23701-peredacha-peremennojj-v-plagin-po-change.html)

Viper 02.12.2011 18:10

Передача переменной в плагин по change()
 
Есть плагин http://loopj.com/jquery-tokeninput/
Собстно с ним проблем нет. Подключил и все работает.

Есть селект. На него повешан обработчик.
var lang;
$('#jform_language').change(function(){
	lang = $('option', this).filter(':selected').val();
}).trigger('change');


Далее подключаю плагин
$('#jform_genre').tokenInput('index.php?lang='+lang+'&format=raw', {
	theme: 'facebook',
	tokenLimit: 5,
	minChars: 2,
	queryParam: 'term'
});


Проблема в том что в lang передаваемую в url приезжает не то что было выбрано, а значение заданное по умолчанию. К примеру если навесить click() на какой-то элемент и выводить значение lang, то получим выбранное значение, а не то что было задано по умолчанию.

3 часа времени коту под хвост и идей никаких в чем может быть проблема.

devote 02.12.2011 18:54

var lang;
$('#jform_language').change(function(){
    lang = $(this).val();
}).trigger('change');

Viper 05.12.2011 11:10

Результата нет :(

ksa 05.12.2011 11:17

Цитата:

Сообщение от Viper
$('option', this).filter(':selected').val();

Какой-то подземный ход на чердак... :)

Для селекта значение выбраного оптион берётся проще ;)

this.value;

ksa 05.12.2011 11:26

Цитата:

Сообщение от Viper
Есть селект. На него повешан обработчик.

Такая схема?

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
	var lang;
	$('#test').change(function(){
		//lang = $('option', this).filter(':selected').val();
		lang = this.value;
	}).trigger('change');
	alert(lang);
});
</script>
</head>
<body>
<select id='test'>
	<option value='0'>Item 0</option>
	<option value='1'>Item 1</option>
	<option value='2'>Item 2</option>
</select>
</body>
</html>

Viper 05.12.2011 12:40

ksa,
так то так... Но в плагин все равно уходит значение по умолчанию :( Хотя в alert приезжает то что нужно. Какой-то странный плагин...

ksa 05.12.2011 13:11

Цитата:

Сообщение от Viper
Но в плагин все равно уходит значение по умолчанию

Тогда получается что tokenInput выполняется только при загрузке страницы...

Если только вот так загнуть :)

var lang;
$('#test').change(function(){
	//lang = $('option', this).filter(':selected').val();
	lang = this.value;
	$('#jform_genre').tokenInput('index.php?lang='+lang+'&format=raw', {
		theme: 'facebook',
		tokenLimit: 5,
		minChars: 2,
		queryParam: 'term'
	});
}).trigger('change');


Но я х/з как там работает тот плагин... :)


Часовой пояс GMT +3, время: 15:53.