2012-06-20 4 views
0

У меня есть два раскрывающихся меню (select1 и select2) и 1 входной текст (курс). При выборе значения в select1 он изменяется в select2. Когда я выбираю значение в select2, значение появляется во входном тексте. Теперь я хочу изменить входной текст для изменения, когда select2 изменяется с помощью триггера select1. Но это не работает. Я попытался изменить, размыть ... но это не помогло.триггер jquery на document.form.element.value

Любая идея?

$('#select1').change(function() { 
    $.post("includes/functions.php", {select1: ""+$(this).val()+""}, 
     function(data){ 
     var objet = JSON.parse(data);  
     ... 
     $("#select2").val(objet.select2value); //That works! 
     } 
} 

, а затем:

$('#select2').bind('keyup blur change focus click', function(){ 
    $.post("includes/functions.php", { 
    rate: ""+$(this).val()+"" }, function(data){ 
     var objet = JSON.parse(data); 
     /* That works when I change select2 directly in the drop-down; 
      not when select2 changed by changing select1 */ 
     document.form.rate.value = objet.rate; 
    }); 
}); 
+0

Пытались ли вы [триггер] (HTTP: //api.jquery.com/trigger/)? Например: '$ (" # select2 "). Trigger (" change ");' –

+0

Использование 'trigger (" change ")' не меняет входной текст вообще. Или тогда мне нужно будет поставить вторую функцию в первую; но этого я и хотел избежать. Также потому, что входной текст должен быть активирован только с помощью select2; без select1. – remyremy

+0

Ну, вы всегда можете создать дополнительную функцию, которая срабатывает всякий раз, когда происходит какое-либо из двух изменений. И попросите этого сделать сообщение, чтобы получить скорость с сервера и обновить входное значение. –

ответ

1

Как насчет рефакторинга логики за пределами второго обработчика, и вызывая его на обоих мероприятиях:

$('#select1').change(function() { 
    $.post("includes/functions.php", {select1: ""+$(this).val()+""}, 
     function(data){ 
     var objet = JSON.parse(data);  
     ... 
     $("#select2").val(objet.select2value); 
     updateRate(); 
     } 
} 

$('#select2').change(function(){ 
    updateRate(); 
}); 

function updateRate() { 
    $.post("includes/functions.php", { 
     rate: ""+ $('#select2').val() +"" }, function(data){ 
      var objet = JSON.parse(data); 
      document.form.rate.value = objet.rate; 
     }); 
} 
+0

yep! это чисто! большое спасибо! – remyremy

Смежные вопросы