1
<form jwcid="@Form" listener="listener:updateStaff">


<select jwcid="staffselect@Select" multiple="ognl:false" validators="validators:required" onchange="this.form.submit()" listener="listener:updateStaff">
               <span jwcid="@For" source="ognl:hrStaff" value="ognl:currentHrStaff" index="ognl:currentHrStaffIndex">
                   <option class="text11" jwcid="@Option" selected="ognl:hrStaffSelection[currentHrStaffIndex]" label="ognl:currentHrStaff"/>
               </span>
           </select>


</form>

当SelectBox上的Onchange时,将提交此表单,并且我的pageValidate()将通过upadtestaff()侦听器方法调用。我想知道,当此类提交被触发时,onchange='' 是否可以传递一个我能够在 pagevalidate() 'selectboxisfired' 中捕获的标志('selectboxisfired' 字符串)?这将允许我在 pagevalidate 中的逻辑指示是由选择框触发的。

4

1 回答 1

1
onchange="window.submitTrigger=this; this.form.submit();"

然后,您可以在验证例程中读取window.submitTrigger变量以找出触发提交的元素,例如

/* somewhere in pagevalidate() routine */
/* note here that I am assuming the html id of the selectbox is "staffselect"
   -> I'm not familiar with Tapestry so simply had to make the assumption
      that this is the correct id - if not, change the string you're searching
      for accordingly */
if (window.submitTrigger.id = "staffselect") {
  //do something here
}

值得注意的是,我认为以这种方式使用 onchange 是一种不好的风格,但是不了解 Tapestry,我只是给你一个最简单的改变,对已经存在的东西,我认为它会起作用......

于 2010-04-16T10:12:01.893 回答