Мама, роди меня обратно... проблемки с JavaScripts

x-mobi.ru
На сайте с 30.12.2007
Offline
88
476

Замучался, ей богу) Может, кто что подскажет?

Проблема:

С помощью JS "выбираю" элемент в select'е. Все бы хорошо, но в таком случае НЕ работает предопределенное событие onChange этого select'a! Мне нужно вызвать именно его и именно из onchange="...", никак не иначе.

Что делать?! Голову уже сломал) Да, юзаю jQuery + знаний в JS не особо так.

А, да, вот так данное действие происходит

$(...).val(...);

Помогите кто чем может :laugh:

О_о
ewg777
На сайте с 04.06.2007
Offline
225
#1

Весь код можно в лс?

JTRTA
На сайте с 06.07.2008
Offline
25
#2

как то так


$('#category').change(function(){
var id = $('#category option:selected').val();
});
Дизайн /ru/forum/493415 (/ru/forum/493415) Верстка от 15$ /ru/forum/509339 (/ru/forum/509339) Сайты под ключ aiogino.studio@gmail.com icq: 460146806
x-mobi.ru
На сайте с 30.12.2007
Offline
88
#3

JTRTA, дак, это вы переопределили событие ведь?

Я вообще делаю обертку для своих select'ов, т.е. стандарт - скрываю, новый - показываю. Функция универсальна для всех селектов на сайте, а некоторые могут использовать какие-то свои события, так вот в моем случае не получается сделать так, чтобы события выполнялись, т.к. они реагируют на пользователя, а не на js (

JTRTA
На сайте с 06.07.2008
Offline
25
#4

x-mobi.ru

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

x-mobi.ru
На сайте с 30.12.2007
Offline
88
#5

JTRTA, нет, вы не понимаете :)

Допустим есть код

<select onchange="func(this.val)">
<opton>1</opton>
<opton>2</opton>
</select>

Если мышкой выбрать вариант - выполняется функция func. Но если я выбираю с помощью JS, как описал выше, то эта функция не выполняется. Тут никакой код, думаю, не причем.

Сам JS-код то вот, но, думаю, мало чем поможет:

var i = 0;

$(document).ready(function() {
createDropDown();
});

function createDropDown() {
$(document).bind('click', function(e) {
var $clicked = $(e.target);
if(!$clicked.parents().hasClass('dropdown')) $('.dropdown dd ul').hide();
});
$('select').each(function() {
i++;
var id = 'select_' + i;
var id_new = 'select_' + i + '_new';
$(this).attr('id', id);
//$(this).hide();
var selected = $(this).find('option[selected]');
var options = $('option', $(this));
$('#' + id).after('<dl id="' + id + '_new" class="dropdown"></dl>');
$('#' + id_new).append('<dt><a href="#">' + selected.text() + '<span class="value">' + selected.val() + '</span></a></dt>');
$('#' + id_new).append('<dd><ul></ul></dd>');
options.each(function() {
$('#' + id_new + ' dd ul').append('<li><a href="#">' + $(this).text() + '<span class="value">' + $(this).val() + '</span></a></li>');
});
$('#' + id_new + ' dt a').click(function() {
$('#' + id_new + ' dd ul').toggle();
});
$('#' + id_new + ' dd ul li a').click(function() {
var text = $(this).html();
$('#' + id_new + ' dt a').html(text);
$('#' + id_new + ' dd ul').hide();
$('#' + id).val($(this).find("span.value").html());
});
});
}
[Удален]
#6

JTRTA, оберните в онреди

$(function () {$('#category').change(function(){
var id = $('#category option:selected').val();
}); });
x-mobi.ru
На сайте с 30.12.2007
Offline
88
#7

bearman, так или иначе, совет JTRTA все равно "немножко" не верен :)

[Удален]
#8
x-mobi.ru:
<select id='myselect' onchange="func(this.val)">
<opton>1</opton>
<opton>2</opton>
</select>

в том месте где вы меняете его значение делайте так

$('#myselect').trigger('change')

за правильность синтаксиса не ручаюсь ибо с жквери не работаю

x-mobi.ru
На сайте с 30.12.2007
Offline
88
#9

neolord, выражаю искреннюю благодарность! Помогло :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий