2010-08-03 30 views
5

比方說,我有SJ:autocompleter這樣的:Struts2的JQuery的如何做平變化阿賈克斯

<sj:autocompleter id="idDistributor" 
name="idDistributor" 
list="%{idDistributorList}" label="ID 
Distributor" indicator="indicator" /> 

當值改變,我想通過細節值到其他文本字段是這樣的:

<sj:textfield label="Nama Distributor" id="namaDistributor" name="namaDistributor" required="true"/> 

其中它的值將從struts back bean(FormAction)中檢索。

我該怎麼做?

真的在此先感謝。

Mr.K

回答

7

下面將autocompleter值發送到你的動作並設置#namaDistributor值與返回的字符串:

$('#idDistributor').change(function(){ 
    // Make the ajax request 
    $.ajax({ 
     url: 'path/to/back-bean.action', 
     data: "autocompleterValue=" + $(this).val(), 
     dataType: "json", 
     success: function(data) {  
      // Set the inputs from the json object    
      $('#namaDistributor').val(data.distributor); 
      $('#namaPrice').val(data.price); 
     } 
    }); 
}); 

你可以閱讀更多有關$.ajax() method here。上面的JSON示例假定您的行動正在創造一個JSON對象格式如下:

{"price": "123.40", "distributor": "XYZ Inc."} 

你可以閱讀更多關於this article使用JSON與Struts2的。

+0

嗨帕特找到這樣的例子,我想要將結果值從後端bean傳遞到#namaDistributor,而不是直接從idDistributor值傳遞,我該如何做到這一點? 謝謝 – 2010-08-03 17:53:17

+0

沒問題。我更新了代碼,以顯示如何從ajax調用的結果更新'#namaDistributor'。 – Pat 2010-08-03 18:42:47

+0

真棒,它可以工作......在返回StreamResult而不是String的後臺bean上稍作修改。 Pat,對於進一步的問題抱歉,如果我想在autocompleter onchange之後修改多個文本字段,我該怎麼做呢?另一個字我需要返回兩個不同字段的值。 謝謝。 – 2010-08-03 20:19:02

2

你可以用onSelectTopics來做到這一點。

訂閱像這樣的話題:

<script> 
$.subscribe('autocompleteSelect', function(event, data) { 
    var ui = event.originalEvent.ui; 
    $('#namaDistributor').val(ui.item.value); 
}); 
</script> 

,並在它的autocompleter

<sj:autocompleter id="idDistributor" 
name="idDistributor" onSelectTopics="autocompleteSelect" 
list="%{idDistributorList}" label="ID 
Distributor" indicator="indicator" /> 

可以在Struts2 jQuery Plugin Showcase

+0

感謝您的洞察力。 – 2010-08-03 20:19:33