Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2011, 13:29
Новичок на форуме
Отправить личное сообщение для NickSun Посмотреть профиль Найти все сообщения от NickSun
 
Регистрация: 05.04.2011
Сообщений: 7

Элементы формы
Есть форма для добавления/редактирования клиента. В шаблоне формы прописаны все поля которые могут на ней быть. Для нового пользователя часть полей показывать не нужно, также не нужно показывать некоторые поля при редактировании пользователя (в зависимости от определенных условий). Подскажите как это можно реализовать? Есть ли какое-нибудь событие отвечающее за то что данные в форму были загружены?

Код формы:
var EditCustomerFormPanel = new DefaultFormPanel({
	id: 'EditCustomerFormPanel',
	tbar: EditCustomerTB,
	title: 'Edit Customer',
	reader: new Ext.data.XmlReader({
		record: 'item',
		success: '@success'
	}, ['user_id', 'login', 'parent_id', 'u_password', 'secret_question', 'secret_answer', 'lname', 'fname', 'email', 'address', 'city', 'zip', 'gender', 'state_id', 'pricing_plan_id', 'birthday', 'home_phone', 'cell_phone', 'comments', 'account_status', 'info_match_with_bill_info', 'reseller_name', 'discount', 'domain_prefix', 'group_id']),
	region: 'center',
	cls: 'bgw br bl bb',
	baseCls: 'whitebg',
	layout: 'form',
	border: false,
	labelWidth: 175,
	bodyStyle: 'padding:5px 5px 0',
	defaults: {
		width: 250
	},
	items: [
		{
			xtype: 'hidden',
			name: 'save_customer',
			value: 1
		},
		{
			xtype: 'hidden',
			name: 'user_id',
			id: 'user_id',
			value: 0
		},
		{
			allowBlank: false,
			xtype: 'textfield',
			fieldLabel: 'Login (*)',
			name: 'login'
		},
		...
		{
			xtype: 'checkbox',
			fieldLabel: 'Send Verification Email',
			name: 'send_email',
			value: 1,
			style: {
				display: 'none'
			}
		},
		{
			xtype: 'button',
			id: 'resend_email',
			text: 'Resend Verification Email',
			handler: sendVerEmail,
			style: {
				display: 'none',
				marginTop: '20px'
			}
		}
	]
});

Последний раз редактировалось NickSun, 05.04.2011 в 13:35.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2011, 17:27
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

var myFormPanel = new Ext.form.FormPanel({
    title: 'Client and routing info',
    items: [{
        fieldLabel: 'Client',
        name: 'clientName'
    }, {
        fieldLabel: 'Port of loading',
        name: 'portOfLoading'
    }, {
        fieldLabel: 'Port of discharge',
        name: 'portOfDischarge'
    }]
});

myFormPanel.getForm().load({
    url: '/getRoutingInfo.php',
    params: {
        consignmentRef: myConsignmentRef
    },
    success : function(form, action) {
        Ext.Msg.alert("Load sucess", action.response.responseText);
    },
    failure: function(form, action) {
        Ext.Msg.alert("Load failed", action.response.errorMessage);
    }
});


Проверяй с помощью success и failure
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2011, 17:31
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

Цитата:
Для нового пользователя часть полей показывать не нужно, также не нужно показывать некоторые поля при редактировании пользователя (в зависимости от определенных условий). Подскажите как это можно реализовать?
myFormPanel.items.get(0).hide();
myFormPanel.items.get(0).show();

Где 0 - это порядковый номер в массиве myFormPanel.items
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2011, 11:50
Новичок на форуме
Отправить личное сообщение для NickSun Посмотреть профиль Найти все сообщения от NickSun
 
Регистрация: 05.04.2011
Сообщений: 7

VKS, спасибо за пример, но как узнать что данные загружены если используется XmlReader ?

Последний раз редактировалось NickSun, 06.04.2011 в 15:17.
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2011, 16:08
Новичок на форуме
Отправить личное сообщение для NickSun Посмотреть профиль Найти все сообщения от NickSun
 
Регистрация: 05.04.2011
Сообщений: 7

Разобрался. Нужно так:
EditCustomerFormPanel.on({
	actioncomplete: function(form, action) {
		if (action.type == 'load') {
			//смотрим что пришло и прячем/показываем поля
		}
	}
});
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2011, 16:10
Новичок на форуме
Отправить личное сообщение для NickSun Посмотреть профиль Найти все сообщения от NickSun
 
Регистрация: 05.04.2011
Сообщений: 7

Возник следующий вопрос - как спрятать/показать такое поле:
{
	xtype: 'checkbox',
	id: 'send_email',
	fieldLabel: 'Send Verification Email',
	name: 'send_email',
	value: 1,
	hidden: true
}

если так Ext.getCmp('send_email').hide(); то прячится только чекбокс, а лейба остается
Ответить с цитированием
  #7 (permalink)  
Старый 06.04.2011, 16:26
Новичок на форуме
Отправить личное сообщение для NickSun Посмотреть профиль Найти все сообщения от NickSun
 
Регистрация: 05.04.2011
Сообщений: 7

Разобрался, так:
var send_email_chk = Ext.getCmp('send_email');
send_email_chk.container.up('div.x-form-item').hide();
send_email_chk.hide();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать элементы формы недоступными Compas Общие вопросы Javascript 4 06.10.2012 21:59
в модальном окне не работает скрипт проверки формы necroms jQuery 1 11.03.2011 15:14
Валидация формы dmsuslov jQuery 4 05.11.2010 16:12
Простая проверка формы. Добавить "динамики". Jurasmi Элементы интерфейса 3 07.04.2010 16:48
PHP и элементы формы faiq Серверные языки и технологии 2 06.12.2009 07:04