【斗医】【15】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qingkechina.blog.51cto.com/5552198/1423592

在介绍HTML富文本使用之前,先解决几个易用性的问题

1、在chrome浏览器中textarea高度自适应存在问题:当输入任何一个字符时textarea高度都会增加

解决办法:

(1)在challenge.js中定义autoAdaptHeight()方法,内容如下:

/**

 * textarea高度自适应

 */

function autoAdaptHeight(component){

    var paddingTop = parseInt($(component).css("padding-top"));

    var paddingBtm = parseInt($(component).css("padding-bottom"));

    var scrollHeight = component.scrollHeight;

    var height = $(component).height();

    // 判断是否为chrome浏览器

    if(window.navigator.userAgent.indexOf("Chrome") > 0){

        if(scrollHeight - paddingTop - paddingBtm > height){

            $(component).css("height", scrollHeight);   

        }

        return;              

    }

    $(component).css("height", scrollHeight);

}

(2)修改initInputComponent()方法,使其调用autoAdaptHeight()方法

// 设置textArea高度自适应

dynamicItem.bind("keyup", function(event){

    autoAdaptHeight(this);

});



【备注】:

1、在网上搜索相关解决方案时,很多都存在此问题,对兼容性做的稍差一些。网上也有一些组件,感兴趣的可以看一下源码

2、效果不好演示,这里就不给出效果图了


2、当战书标题长度超长时没有给出相应的提示

解决办法:

(1)在challenge.js中定义setLengthHit()方法,内容如下:

/**

 * textarea长度超出时提示

 */

function setLengthHint(component){

    if(component.id == "challenge_title_id"){

        if(!component.value){

            return;

        }

        var titleId = $("#challenge_title_hint_id");

        if(component.value && component.value.length > 96){

            titleId.parent().show();

        } else {

            titleId.parent().hide();

        }

        titleId.text(component.value.length - 96);

    }

}

(2)修改initInputComponent()方法,使其调用setLengthHint()方法

dynamicItem.bind("keyup", function(event){

    // 设置textArea高度自适应

    autoAdaptHeight(this);

    // 长度超长时给出提示信息

    setLengthHint(this);

});

效果如下图所示:

3、进入下战书页面,标题textarea没有自动获取鼠标

解决办法:

修改initInputComponent()方法,添加如下内容:

/**

 * 初始化文本框

 */

function initInputComponent(){        

    var textareaArray = new Array("challenge_title_id", "challenge_prescript_id", "challenge_challenger_id");

    // 进入页面"标题textarea"获取焦点

    $("#" + textareaArray[0]).focus();

    

    $.each(textareaArray, function(i, item){

        var dynamicItem = $("#" + item);

        // 绑定PlaceHolder

        bindPlaceHolder(dynamicItem);

        

        dynamicItem.bind("keyup", function(event){

            // 设置textArea高度自适应

            autoAdaptHeight(this);

            // 长度超长时给出提示信息

            setLengthHint(this);

        });

    });

}

效果如下图所示:



【题外话】:

一个系统的好坏,真的不在于它使用了哪些牛的技术,对于用户来讲就是易用性,拿iphone来讲它的app并不是全都好用,只是把其中的某个点做到了极致;facebook的成功亦是如此,它开始时就把其中的几个点做的很体贴。


本文出自 “青客” 博客,请务必保留此出处http://qingkechina.blog.51cto.com/5552198/1423592

时间: 2025-01-21 04:11:06

【斗医】【15】Web应用开发20天的相关文章

【斗医】【17】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1543919     细心的读者可能已发现"Web应用开发50天"改为了"Web应用开发20天",之所以这样调整是因为当时想前20篇只讲解Web基础知识,中间10篇讲解我一直想要封装的Web框架,后20篇将该应用转换为Android应用.但由于最近女儿出生,业余时间都被她占用了,

【斗医】【7】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1330647 现在想想一下首页放置哪些内容?由于该WEB应用的聚集点在"斗"上,也就是对医术的探讨方面,个人认为应该是对展示较新的或评价较好的病症药方的展示方面.这里包含两部分:(1)数据的获取,即动态读取较好或评价较好的药方数据:(2)页面的展示,即静态页面布局和数据显示. 对于第一个问题会涉及到

【斗医】【9】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1377044 一.调试<[斗医][8]Web应用开发50天>数据表映射方法    本来想把数据库配置.Hibernate连接封装和映射配置一块写的,但由于个人时间问题时断时续,思路也多次被打断,所以在此对其进行弥补.    若读者把上篇的附件下载下来运行,会发现运行失败,下面随着异常分析并解决. 1.截止目

【斗医】【11】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1386941 本文在上文的基础上完成用户登录验证功能. 四.获取数据请求业务处理封装 1.配置数据读取方式,它的作用是使用FrameDataGainer响应以.data结尾的请求,并把处理后的数据返回给客户端.打开D:\medical\war\WEB-INF\web.xml文件,填充如下内容: 1 2 3 4

【斗医】【12】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1390410 在上文中有意埋了几个安全彩蛋,以便后面在聊网络安全时使用. 书接前言,对上文做过实践的朋友肯定会发现:当用户注册/登录成功后页面跳转到了系统首页,但首页的导航菜单并没有显示用户名.本文重点实现这个特性,同时也谈谈系统的编码问题. 六.注册/登录成功后导航菜单显示当前用户名    与JSP不同之处

【斗医】【6】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1322419 对于一个网站来讲均会存在公共页面,如异常页面.系统菜单等等,本章针对斗医系统菜单做一下介绍.可以想一想常见网站的系统菜单形式,一般都是菜单项在每个页面的内容不变,区别是菜单的选择状态不同. JSP可以使用<%@ include file="">语句把公共系统菜单页面引进来,

【斗医】【4】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1315778 在上面把日志文件打印到了D:\log下,考虑到Liunx服务器环境下,让最终用户修改可能不可接受,接下来完成三件事情:(1)应用程序指定输出路径(2)完善异常类的处理(3)完成页面跳转的封装处理 一.指定输出路径 由于Logback的<FILE>指定相对路径与Log4J存在差异,所以在修改日志

【斗医】【5】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1317441 三.页面跳转封装 [接上]在< 接下来要完成如下功能: Web容器(Tomcat)接受到HTTP请求后,Web容器把HTTP转换为HttpServletRequest对象,然后根据请求名称匹配规则找到相应的Servlet,调用servlet-class对应类的doGet()或doPost()方法

【斗医】【3】Web应用开发20天

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1308932 在上面提及异常的中英文从资源文件中读取,若读取失败需要日志记录,所以使用网上正在闹腾的Logback来记录.关于Logback与Log4j这里不做评判和说明,所有疑问可以请教谷歌. 一.Logback的使用前期准备 1.在官网http://logback.qos.ch/download.html