`
denghua10
  • 浏览: 74087 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

contact-form-经典弹出

阅读更多
ExtJS里handler
handler与Action相关联,一个Action可以有多个Component引用;

Action是一个可被共享的对象,有五个主要的属性:text, handler, iconCls, disabled, hidden

component的构建方式比较有意思:

new Ext.Button(action)

是Button接收一个Action对象作为构造参数吗?但是查看Button的API却没有发现action属性。反而Button的构造参数是一个(Object config),也就是说,只是一个配置对象(包含各种属性),而Action的五个属性正好Button也都有,所以,可以接收一个Action来进行构造。

其他属性不考虑,看handler,Button中的handler配置项文档说明,这个handler是与click Event关联的。也就是说,click是Button这个Component的首要Event(参考Action中handler的文档),这就是Handler的运行方式:被某个组件的首要Event所触发。

Ext.require([
    'Ext.form.*'
]);

Ext.onReady(function() {

    var win;

    function showContactForm() {
        if (!win) {
            var form = Ext.widget('form', {
                layout: {
                    type: 'vbox',
                    align: 'stretch'
                },
                border: false,
                bodyPadding: 10,

                fieldDefaults: {
                    labelAlign: 'top',
                    labelWidth: 100,
                    labelStyle: 'font-weight:bold'
                },
                defaults: {
                    margins: '0 0 10 0'
                },

                items: [{
                    xtype: 'fieldcontainer',
                    fieldLabel: 'Your Name',
                    labelStyle: 'font-weight:bold;padding:0',
                    layout: 'hbox',
                    defaultType: 'textfield',

                    fieldDefaults: {
                        labelAlign: 'top'
                    },

                    items: [{
                        flex: 1,
                        name: 'firstName',
                        fieldLabel: 'First',
                        allowBlank: false
                    }, {
                        width: 30,
                        name: 'middleInitial',
                        fieldLabel: 'MI',
                        margins: '0 0 0 5'
                    }, {
                        flex: 2,
                        name: 'lastName',
                        fieldLabel: 'Last',
                        allowBlank: false,
                        margins: '0 0 0 5'
                    }]
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Your Email Address',
                    vtype: 'email',
                    allowBlank: false
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Subject',
                    allowBlank: false
                }, {
                    xtype: 'textareafield',
                    fieldLabel: 'Message',
                    labelAlign: 'top',
                    flex: 1,
                    margins: '0',
                    allowBlank: false
                }],

                buttons: [{
                    text: 'Cancel',
                    handler: function() {
                        this.up('form').getForm().reset();
                        this.up('window').hide();
                    }
                }, {
                    text: 'Send',
                    handler: function() {
                        if (this.up('form').getForm().isValid()) {
                            // In a real application, this would submit the form to the configured url
                            // this.up('form').getForm().submit();
                            this.up('form').getForm().reset();
                            this.up('window').hide();
                            Ext.MessageBox.alert('Thank you!', 'Your inquiry has been sent. We will respond as soon as possible.');
                        }
                    }
                }]
            });

            win = Ext.widget('window', {
                title: 'Contact Us',
                closeAction: 'hide',
                width: 400,
                height: 400,
                minHeight: 400,
                layout: 'fit',
                resizable: true,
                modal: true,
                items: form
            });
        }
        win.show();
    }

    var mainPanel = Ext.widget('panel', {
        renderTo: Ext.getBody(),
        title: 'Welcome!',
        width: 500,
        bodyPadding: 20,

        items: [{
            xtype: 'component',
            html: 'Thank you for visiting our site! We welcome your feedback; please click the button below to ' +
                  'send us a message. We will respond to your inquiry as quickly as possible.',
            style: 'margin-bottom: 20px;'
        }, {
            xtype: 'container',
            style: 'text-align:center',
            items: [{
                xtype: 'button',
                cls: 'contactBtn',
                scale: 'large',
                text: 'Contact Us',
                handler: showContactForm
            }]
        }]
    });

});
分享到:
评论

相关推荐

    popup-captcha-form-1.zip

    4. "popup-contactform.php" 可能是控制弹出表单显示的PHP文件,包含弹出逻辑和表单的初始化。 5. "show-captcha.php" 是验证码显示和验证的后端支持,可能实现了生成随机验证码和验证用户输入的逻辑。 6. "contact-...

    Simple Contact Form Using HTML JavaScript.zip

    这可以通过改变HTML元素的样式或弹出对话框实现。 通过学习以上这些知识点,你可以创建一个功能齐全且用户友好的简单联系表单,允许访客在不离开当前页面的情况下与网站所有者沟通。在实际应用中,还可以考虑添加更...

    PHP contact us forum

    使用JavaScript或jQuery可以轻松实现这一点,例如弹出对话框或改变元素的样式。 10. **日志记录**:为了追踪和诊断问题,服务器端可以记录每个请求的详细信息,例如日志文件。这样可以帮助开发者了解系统运行情况,...

    颜色可设定网站.zip

    3. **fancybox** - Fancybox是一个流行的轻量级JavaScript库,用于创建弹出式的图像、视频或其他媒体视图。在颜色可设定的网站中,Fancybox可能被用来展示预设或用户自定义颜色的效果,用户可以通过点击触发Fancybox...

    黑色纹理精美的产品下载单页CSS模板_黑色纹理精美产品下载.rar

    Fancybox是一种轻量级的JavaScript库,用于创建弹出式图像、媒体和网页框架,常用于产品预览或下载按钮的美化。 3. **reset.css** - 重置CSS文件,用于消除浏览器之间的默认样式差异,确保跨平台的样式一致性。 4....

    《微信小程序开发项目教程》教学教案(5).pdf

    - **picker 从底部弹起的滚动选择器组件**:用户可以从列表中选择一个选项。 - **switch 开关选择器组件**:用于开启或关闭某些设置。 - **slider 滑动选择器组件**:用户可以通过滑动来选择一个值。 ##### 5.1.1 ...

    手机wap源码模板 (791).zip

    3. **fancybox**:Fancybox通常是一个轻量级的JavaScript库,用于创建弹出式的图像、视频或其他媒体查看器。它可以帮助提升用户体验,使多媒体内容在小屏幕设备上更易于查看。 4. **images**:这是一个图片文件夹,...

    在 NetBeans IDE 中设计 Swing GUI - 教程

    - 在弹出的对话框中,输入表单名称,例如“ContactForm”,并选择默认模板。 - 单击“完成”以创建表单。 创建完成后,你会看到一个空白的`JFrame`容器出现在设计视图中。接下来,可以开始向这个容器添加组件了。 ...

    wordpress主题三栏白色主题:Atahualpa

    这些脚本通常用于增强用户体验,比如平滑滚动、弹出窗口、图片轮播等功能。 - **自定义脚本**:用户可以根据需要添加自定义JavaScript代码。这可以通过WordPress的“自定义CSS和JavaScript”功能或通过安装特定的...

    .net实例 Model pop up

    在.NET框架中,Model Pop-up通常指的是在用户界面(UI)上弹出一个模态对话框,用于显示或编辑特定的数据模型。这个实例可能是一个Windows Forms或者WPF应用程序中的功能,用于提供更好的用户体验,比如在不离开当前...

    mypersonalwebsite:我的第一个个人网站

    在"mypersonalwebsite"项目中,可能有一个"script.js"文件,用于处理用户与网页的交互,如点击按钮弹出信息,滚动时改变导航栏样式,或者动态加载内容。例如,`document.getElementById('contact-form')....

    vb实现通讯录,通讯录源码

    - **修改联系人**:选中列表框中的联系人,弹出编辑窗体进行信息修改,然后更新到数据结构。 - **删除联系人**:用户选择列表框中的联系人,点击“删除”按钮,从数据结构中移除该联系人。 - **导入导出数据**:...

    基于web在线餐饮网站的设计与实现——仿Coco线上订奶茶饮料6个页面(HTML+CSS+JavaScript)

    - **点击事件**:为按钮或其他元素添加点击事件处理程序,实现特定功能,如弹出窗口或跳转到其他页面。 #### 五、网站实现示例 下面是一个简单的HTML结构代码示例: ```html <!DOCTYPE html> <meta http-equiv...

    个人通讯簿程序c# 窗体类型

    5. **对话框**: 在添加和编辑联系人时,可能需要弹出对话框来获取用户输入。对话框如InputBox和MessageBox在C#中可以通过ShowDialog方法显示,提供了一种与主窗口分离的交互环境。 6. **DataGridView控件**: 这是...

    wordpress插件集合!

    30. **New Posts Pop-up**:以弹出窗口的形式展示新文章或评论,但过度使用可能会影响用户体验。 31. **Find Us**:集成Google Maps,方便用户找到您的实际位置。 32. **One Year Ago**:回顾一年前发布的内容,...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent.ACTION.CALL的使用 5.3 自制发送...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent.ACTION.CALL的使用 5.3 自制发送...

Global site tag (gtag.js) - Google Analytics