Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Прерывание выполняемого события (https://javascript.ru/forum/events/28835-preryvanie-vypolnyaemogo-sobytiya.html)

lorrin 04.06.2012 16:02

Прерывание выполняемого события
 
Добрый день!
Javascript начал осваивать совсем недавно, так что не судите строго :)
У меня вот какой вопрос. есть JSP элемент commandLink, который имеет атрибут actionListener и событие onclick
<jsp:commandLink id="cl1" actionListener="JavaBean.method1" onclick="jsFunction();"/>
Если посмотреть как это быдет выглядеть на стороне клиента, получается
<a onfocus="setFocus(this.id);" onclick="jsFunction();var form=formOf(this);form['form1:_idcl'].value='form1:cl1';return iceSubmitPartial(form,this,event);" onblur="setFocus('');" id="form1:cl1" href="javascript:;" class="iceCmdLnklinkAdd">Добавить</a>

я хочу сделать, чтобы моя функция (jsFunction();) могла прервать выполнение onclick. Другими словами, чтобы я мог прервать(недопустить) транзакцию на сервер.

ЗЫ... надеюсь что не очень криво описал проблему:)
Большое спасибо за помощь.

Deff 04.06.2012 16:15

lorrin,

Перед отправкой формы делаете проверку на флаг, выставляемый Вашей jsFunction - если флаг не true, запрещаете отправку

<script type="text/javascript">
var Flag=false; //? Флаг отправки
function process_form(the_form) {
 if(!Flag) return false;
 //Тут могут быть еще проверки
 return true;
}
</script>
<form id="post" class="container" method="post" action="/test.php" onsubmit="this.submit.disabled=true;if(process_form(this)){return true;}else{this.submit.disabled=false;return false;}" enctype="multipart/form-data">
  ...
  ...

</form>

lorrin 05.06.2012 15:48

хм. Насколько я понимаю отправка происходит не стандартными функциями браузера, а скрипром, сформированным из атрибута actionListener. (функция iceSubmitPartial(form,this,event);)
Тоесть, если я правильно представляю это ajax технология.
если на <form> я делаю событие onsubmit="" оно вообще не происходит.

Возможно есть какието варианты в моей функции jsFunction() остановить прервать обработку текущего события. (тоесть по <a onclick="... у меня вначале вызывается моя функция jsFunction(), а потом сформированная сервером iceSubmitPartial(form,this,event); и если бы внутри своего метода я смог бы прервать обработку onclick-a, я бы смог предотвратить отправку инфы на сервер)
Спасибо.

Deff 05.06.2012 15:57

lorrin,
Тяжко вникать в понятия - либо выложите ссылку на тестовик, с Вашими попытками, ну или попытайтесь изобразить тут необходимый кусок HTML с Вашим скриптом


Часовой пояс GMT +3, время: 17:15.