onchange заставка страницы отправить - PullRequest
0 голосов
/ 16 апреля 2010
<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>

когда onchange on selectbox, эта форма будет отправлена, и мой pageValidate () будет вызван методом listener upadteStaff (). Интересно, когда такая отправка запускается, может ли onchange = '' передать флаг (строка 'selectboxisfired'), который я смог перехватить внутри pagevalidate () 'selectboxisfired'? это позволит моей логике внутри pagevalidate указывать, что она вызывается selectbox.

1 Ответ

1 голос
/ 16 апреля 2010
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, я просто даю вам самое простое изменение того, что уже есть, которое, я полагаю, будет работать ...

...