Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   событие on submit формы (https://javascript.ru/forum/extjs/12371-sobytie-submit-formy.html)

cmygeHm 14.10.2010 17:44

событие on submit формы
 
Здравствуйте.

Подскажите пожалуйста, как объявить событие on submit. Мне после submit'а нужно некоторые вещи делать.

Спасибо.

monolithed 14.10.2010 18:29

Можно так:
<form action="" method="post" onsubmit="alert('отправил!'); return false">
   <input type="submit" value="отправить">
</form>


Но лучше так:
<form name="forma" action="" method="post">
   <input type="submit" value="отправить">
</form>

<script type="text/javascript">
document.forms['forma'].onsubmit = function(){  
    alert('отправил!');
    return false;
};
</script>

cmygeHm 14.10.2010 18:51

Я использую Ext.FormPanel :)

Не html-форму.

VKS 14.10.2010 21:09

Ну примерно так

MyForm = Ext.extend(Ext.form.FormPanel, {
	
	border : false,
	frame : true,
	labelWidth : 120,
	url : 'url',

	,initComponent : function() {

		var config = {

			defaultType : 'textfield',
			defaults : {
				anchor : '-24',
				msgTarget : 'side'
			},
			monitorValid : true,
			autoScroll : true,

			items : [  ],

			buttons : [ {
				text : 'Сохранить',
				iconCls : 'icon-tick',
				formBind : true,
				scope : this,
				handler : this.submit
			}, {
				text : 'Отмена',
				iconCls : 'icon-cross',
				scope : this,
				handler : function() {
					this.fireEvent('chancel');
				}
			} ]
		};

		// apply config
		Ext.apply(this, Ext.apply(this.initialConfig, config));

		// call parent
		MyForm.superclass.initComponent.apply(this, arguments);

		// add custom events
		this.addEvents('saved');
	}

	,onRender : function() {
		// call parent
		MyForm.superclass.onRender.apply(this, arguments);
		this.getForm().waitMsgTarget = this.getEl();
	} // eo onRender

	,submit : function() {
		this.getForm().submit( {
			url : this.url,
			scope : this,
			success : this.onSuccess,
			failure : this.onFailure,
			waitMsg : 'Сохранение данных...'
		});
	} // eo submit

	,onSuccess : function(form, action) {

		var responseObj = Ext.decode(action.response.responseText);

		// send the new record id
		this.fireEvent('saved', responseObj);
	}

	,onFailure : function(form, action) {
		var responseObj = Ext.decode(action.response.responseText);
		this.showError(action.result.error || responseObj.errormsg);
	}

	,showError : function(msg, title) {
		title = title || 'Error';
		Ext.Msg.show( {
			title : title,
			msg : msg,
			modal : true,
			icon : Ext.Msg.ERROR,
			buttons : Ext.Msg.OK
		});
	}

}); // eo extend
// register xtype
Ext.reg('MyForm', MyForm);


И далее где угодно

MyForm.on('saved', function(responseObj) {
// Что делаем			
});

cmygeHm 15.10.2010 09:34

Блин! совсем не то хотел спросить, но ответ тем не менее и в этом коде есть :) спасибо!

shukurove 16.10.2010 21:37

вот так можно еще парамеры для запроса можно добавить
this.getForm().submit( {
	            url : this.url,
	            params : {param1: value1, param2: value2, ....},
	            scope : this,
	            success : this.onSuccess,
	            failure : this.onFailure,
	            waitMsg : 'Сохранение данных...'
	        });

mycoding 17.10.2010 18:06

Вообще можно без submit-а,
просто кнопка и собрать все данные с form-ы.
Один раз делал с формой, а сейчас все без формы.
Но возможно с формой вариант лучше.

cmygeHm 18.10.2010 11:24

только вот не пойму что такое scope. но вообще проблема решена. scopeом не воспользовался. не подскажите что это такое?

mycoding 18.10.2010 11:34

На сколько я знаю, это переменные окружения.
Т.е. например мы вызываем функцию, там откуда мы её вызываем
есть различные переменные, вот scope и передаёт эти переменные.

Возможно я не прав. Сам никогда ещё не пользовался им.
А вообще scope - это область видимости откуда вызываем, вроде так.

VKS 18.10.2010 13:49

http://www.sencha.com/learn/Tutorial...cope_all_about

http://javascript.ru/Function/call


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