2011-10-13 29 views
0

現狀:無法找到一個方法來隱藏值傳遞給操作文件

我有一個jsp 2個道場autocompleters。當它們的值改變時,它們都會觸發相同的操作。現在我希望在動作文件中我應該知道哪個autocompleter被改變了。

我做了什麼:

通常情況下,在這種情況下我會調用JavaScript更改隱藏字段的值,然後訪問操作文件就知道隱藏字段的值被改變了。但是我使用「onChange」屬性來調用javascript(不幸的是)不適用於「autocompleter」。我必須使用「valueNotifyTopics」來調用該操作。

下面是代碼:

<s:url id="scriptURL" action="viewContactInfo" /> 
<sd:div href="%{scriptURL}" listenTopics="viewContactInfo" formId="contactInfo" showLoadingText="false" preload="false"> 
<s:form id="contactInfo"> 
    <sd:autocompleter autoComplete="false" name="customer" list="customerList" valueNotifyTopics="viewContactInfo"/> 
    <sd:autocompleter autoComplete="false" name="contact" list="contactList" valueNotifyTopics="viewContactInfo"/> 
    <s:hidden id="chngd" value="initial"/> 
</s:form> 
</sd:div> 

我希望使用類似這樣的:

onchange="dojo.byId('chngd').value='some value'; dojo.event.topic.publish('viewContactInfo');" 

代替

valueNotifyTopics="viewContactInfo" 

請告知周圍的情況得到的一些方法我已經提到過。

謝謝!

如果我錯過了任何所需的信息,請留下評論。

+0

我不明白;我認爲我們[已經通過這個](http://stackoverflow.com/questions/7565149/calling-a-java-script-function-when-value-of-a-dojo-auto-completer-changes)。爲什麼不能更改主題處理程序代碼中的隱藏值?在任何情況下,答案都是正確的,隱藏的領域需要一個名字,並且在行動中是一個設置者。 –

+0

在主題處理程序中。 –

+0

嗨戴夫,我的問題沒有得到解決,線程死了,所以不得不開始一個新的線程。如果我無法訪問操作中隱藏字段的值,則添加名稱屬性可能會有所幫助。但問題是我無法改變隱藏字段的價值。無論如何,我添加了屬性並檢查,以防萬一,但沒有發生。 – kanishk

回答

0

我已經想通了這一點而回的名稱屬性(僅使用一個名稱屬性將被提交字段),但現在我發佈這個答案,任何人仍處於困境:

在JSP中做到這一點:

<sd:autocompleter autoComplete="false" name="customer" list="customerList" valueNotifyTopics="topic"/> 

然後在JavaScript這樣做:

dojo.event.topic.subscribe("topic", function(){ 
    dojo.byId('chngd').value='some value'; 
    dojo.event.topic.publish('getLists'); 
}); 

這樣,當dojo autocompleter的值發生變化時,可以在調用動作之前設置隱藏字段的值。對於這個問題,你可以做更多的事情,因爲這就像你正在這樣做 - >onclick="topic()"

希望這有助於!

1

您似乎缺少#chngd

+0

Hi Dr.Molle, 感謝您的快速回復。 這裏的問題是,當我使用onChange屬性時,操作沒有被調用。如果操作被調用,我將能夠訪問該值。我在其他使用下拉式或文本框的地方使用此方法。 – kanishk

+0

如果通過某種方式我可以從autocompleter調用一個javascript,那麼它將完成這項工作(我希望!因爲在主題被通知之前javascript應該被執行)。 – kanishk

+1

對不起,我對struts並不熟悉,但是如果您想提交該字段,則必須使用name-attribute。 –