Добрый день! Не могу прикрутить аякс к выпадающему списку. Нужно при выборе значения из селека переходить по ссылке lpu/view/id=?, где id брать из значения.
Сейчас реализовано при помощи кнопки Submit.
Облазил форумы, пробовал activedropDownList, но пишет ошибку get_class() expects parameter 1 to be object.
Какие варианты могут быть? вот код
echo CHtml::form(array('lpu/view'),'GET');
$a = CHtml::listData($models, 'id','name');
echo CHtml::activedropDownList('id','',$a);
$this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'submit', 'label'=>'Выбрать'));
echo CHtml::endForm();
Нифига не понял, при чем тут аякс вообще, но то, что Вы хотите, достигается одной строчкой на js:
$('#тут-айдишник-селекта').on('change', function(e) {window.location = '/lpu/view?id=' + e.target.value;})
(мог немного облажаться со значениями, проверьте)
Прочитал соседний пост, понял про аякс.
В общем, заменить window.location на $.get()
Нет, сперва вы правильно поняли! То есть сейчас просто селектор и кнопка "Выбор". а нужно при нажатии на одно из значений селектора - переходить на страницу lpu/view/id=?
Но не хочет что то… Сделал как писал.
<script type="text/javascript">
$('#id').on('change', function(e) {window.location = '/lpu/view?id=' + e.target.value;})
</script>
ineersa
(Ineersa)
February 19, 2014, 8:08am
5
maximatorrus:
Нет, сперва вы правильно поняли! То есть сейчас просто селектор и кнопка "Выбор". а нужно при нажатии на одно из значений селектора - переходить на страницу lpu/view/id=?
Но не хочет что то… Сделал как писал.
<script type="text/javascript">
$('#id').on('change', function(e) {window.location = '/lpu/view?id=' + e.target.value;})
</script>
Проще так:
<script type="text/javascript">
$('#id').on('change', function() {window.location.replace('/lpu/view?id=' + this.value);})
</script>
Должно работать, и с location.replace() будут работать переходы вперед - назад.
maximatorrus:
Нет, сперва вы правильно поняли! То есть сейчас просто селектор и кнопка "Выбор". а нужно при нажатии на одно из значений селектора - переходить на страницу lpu/view/id=?
Но не хочет что то… Сделал как писал.
<script type="text/javascript">
$('#id').on('change', function(e) {window.location = '/lpu/view?id=' + e.target.value;})
</script>
(мог немного облажаться со значениями, проверьте)
Как минимум, проверьте id у activeDropDown, посмотрите, нет ли js-ошибок итд итп.
(мог немного облажаться со значениями, проверьте)
Как минимум, проверьте id у activeDropDown, посмотрите, нет ли js-ошибок итд итп.
Ой, у меня не active а dropDownList простой, потому что при active выползает ошибка get_class() expects parameter 1 to be object, string given
Пофиг, все равно проверяйте всё по буквам.
Проще всего в обработчик засунуть console.log(e.target.value) (или this.value) и смотреть, что там вообще приходит.
Пофиг, все равно проверяйте всё по буквам.
Проще всего в обработчик засунуть console.log(e.target.value) (или this.value) и смотреть, что там вообще приходит.
сделал active таким способом
$em=Lpu::model()->findAll();
$model = new Lpu();
$list = CHtml::listData($em,'id','name');
echo CHtml::activeDropDownList($model,'id',$list, array('empty' => 'Please Select'));
id теперь Lpu_id, делаю
<script type="text/javascript">
$('#Lpu_id').on('change', function(e) {window.location = '/lpu/view?id=' + e.target.value;})
</script>
и тишина
<script type="text/javascript">
$('#Lpu_id').on('change', function(e) {console.log($(e.target.value))})
</script>
тишина
ineersa
(Ineersa)
February 19, 2014, 9:24am
11
Зачем вам active?
CHtml::dropDownList("my_dropdown","",CHtml::listData(Lpu::model()->findAll(),'id','name'),
array('empty' => 'Please Select',"onchange"=>"js:function(){window.location.replace('/lpu/view?id=' + this.value);}"));
Вот собственно и все.
xolic
(Andrsereb)
February 19, 2014, 9:35am
12
Привет из соседнего кабинета)
ineersa:
Зачем вам active?
CHtml::dropDownList("my_dropdown","",CHtml::listData(Lpu::model()->findAll(),'id','name'),
array('empty' => 'Please Select',"onchange"=>"js:function(){window.location.replace('/lpu/view?id=' + this.value);}"));
Вот собственно и все.
Не хочет ноль реакции правда
ineersa
(Ineersa)
February 19, 2014, 10:01am
15
Если ноль реакции - проблема у Вас. Посмотрите консоль, проверьте ошибки в ней. Собственно выведите в console.log(this.value).
У меня сей код работает верой и правдой, поэтому в его работоспособности не сомневаюсь.
ineersa:
Если ноль реакции - проблема у Вас. Посмотрите консоль, проверьте ошибки в ней. Собственно выведите в console.log(this.value).
У меня сей код работает верой и правдой, поэтому в его работоспособности не сомневаюсь.
Uncaught SyntaxError: Unexpected token (
<script type="text/javascript">
$(function(){$('#my_dropdown').change(function(){window.location = '/yii/maximatorrus//index.php/lpu/view/' + $(this).val();})})
</script>
Работает)