2010-04-16 37 views
0
<form jwcid="@Form" listener="listener:updateStaff"> 


<select jwcid="[email protected]" 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 =''通过一个标志('selectboxisfired'字符串),我能够捕获pagevalidate()'selectboxisfired'内?这将允许我的pagevalidate内部的逻辑指示是由selectbox触发的。onchange force页面提交

回答

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,我只是给你最简单的改变,已经存在的,我认为会工作...

+0

on pagevalidate(),如何获得这个window.submittrigger? – cometta 2010-04-17 08:47:59

+0

声明'window.submitTrigger = this;'创建一个附属于窗口对象的属性,名为'submitTrigger'(它可以是任何你喜欢的名字,submitTrigger就是一个例子),并将其设置为'this'(其中'this '是当前的元素,我将编辑我的答案,以举例说明在pagevalidate()中可能会做什么。 – Graza 2010-04-19 10:06:26