找不到将隐藏值传递给操作文件的方法

时间:2011-10-13 07:19:48

标签: javascript autocomplete dojo struts2

情况:

我在jsp上有两个dojo自动完成器。当它们的值发生变化时,它们都会触发相同的动作。现在我希望在动作文件中我应该知道哪个自动填充器已被更改。

我做了什么:

通常,在这种情况下,我会调用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"

请告知某些方法来解决我提到的情况。

谢谢!

如果我错过了任何必要的信息,请发表评论。

2 个答案:

答案 0 :(得分:1)

看起来您缺少#chngd的名称属性(仅提交具有名称属性的字段)

答案 1 :(得分: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自动填充器的值更改时,您可以在调用操作之前设置隐藏字段的值。就此而言,你可以做更多的事情,因为这就像你正在做的那样 - &gt; onclick="topic()"

希望这会有所帮助!!