如何设计客户端App的输入框?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设计客户端App的输入框?相关的知识,希望对你有一定的参考价值。

参考技术A 关于输入框(Text fields)的定义:Text that the user can select or edit and that sends its action message to its target when the user presses the Return key.(从ios设计规范中摘录)。可以理解为让用户录入信息,为达到下一步的操作目的提供前置条件。常见的使用场景包括但不限于注册登录、搜索、内容编辑以及信息表单等。

输入框从用户的输入方式可以分为 文字输入框 和 选择输入框 。

从用户视角出发,输入框的使用在用户眼里可以分为三个阶段: 输入前(default) 、 输入时(active)、 输入后(inputted) 。而贯穿这三个步骤的设计原则就是: 易懂 、 易写 、 易过 。

首先,需要确定当前的使用场景应该选择哪一种类型的输入框,文字输入框 or 选择输入框。像是个人资料部分的性别、城市、生日等完全可以采用选择输入框的样式,没有必要让用户去手动打“男”/“女”,因为操作成本相比于选择实在太高了。

而文字输入框的UI样式又可以分为 标准 和 间隔 。

其中间隔可以让用户更明确自己的输入位数,方便进行快速的二次确认。常见于手机号码、日期、验证码等。

提示的内容包含但不限于:

【1】必填 or 非必填;

【2】允许输入的字符数量;

【3】允许输入的字符类型;

提示包含两种UI样式,一种是比较常规的输入框外部Lable,另一种是内部Placeholder。两种样式在定义输入框的性质时没有太大的体验差异,但如果是规定输入框内允许输入哪些内容时建议放置在外部,比如“密码应该包含字母、数字或下划线。”由于文本内容较长,用户很容易在输入的过程中忘记具体的规则。

尽量提前告知用户有哪些限制条件,不要到用户最后提交的那一刻才告诉用户你之前输错了。当然也可以在用户输入时提醒。

由于是移动客户端的输入框,所以首先要决定是否自动弹起键盘。一般直接点击输入框时是弹起键盘,但进入到编辑页时要不要弹起键盘需要根据使用场景来确定。

以微博为例,新建微博时包括<写微博>、<图片>、<视频>等方式,其中如果用户点击<写微博>后,进入到编辑页是自动为用户弹起键盘的。而用户选择<图片>或<视频>时,首先需要用户选择本地内的图片或视频,然后再进入到文本描述页,此时是不会为用户自动弹起键盘的。两者产生这种差异的原因大抵是<写微博>是以文本作为主要展现形式,重点就在于文本内容本身。而后两者的则主要是要展示照片或视频,文本作为辅助。用户在进行文本描述前,还需要花费不少精力对图片或视频进行二次增删改查,文本描述的步骤往往需要往后靠。另外,豆瓣也是后一种情况,因为豆瓣选择将文字内容和图片融合在一个界面中,两者处于同一个优先级别。

同时需要注意键盘弹起时尽量不要挡住其他功能控件。比如部分功能控件会随着键盘的弹起而自动移位。

关于弹起的键盘,还要确定弹起什么样的键盘。系统键盘还是自定义键盘,拼音键盘还是数字键盘等。像是一些对安全性很高的App,比如银行App在用户输入账号密码时就是采用自家设计的键盘,来保障用户的数据安全。

一些偏探索类的App就经常会采用预设内容的方式来为用户提供输入思路。比如高德、美团、网易新闻等就会自动为用户预设众多选项。

【1】推荐:热门、个性化、基于GPS定位;

【2】历史记录;

【3】相册(以微信为例,用户拍完一张照片后,返回聊天界面,点击“+”号就会弹出之前拍过的一张照片给用户);

【4】粘贴剪贴板

用户输入时很容易出现字数超过输入框预设范围的情况,这个时候就需要输入框进行自适应。以微信输入框为例,初始状态下是只给用户一行的预设范围,当用户输入多行后,则自动增加输入框的宽度,直到5行的上限。上限范围可以从一句话所占的位数来考虑。

常规的校验范围包括:

【1】格式合法性

【2】位数

【3】重复性

校验的方式一般包含两种:即时校验和触发校验。

*即时校验是用户一进行输入就开始进行实时校验,比如常见的邮箱格式或密码校验,用户输入时,只要不符合格式要求,立刻就进行错误提示。

*触发校验则是用户进行内容提交时才会进行校验,常见于用户注册登录后发现已注册。

用户输入内容后,为了防止用户的某些误操作导致的内容丢失,在部分场景中就需要对用户的一些操作进行二次确认。

以微博为例,用户点击取消后,会弹出是否保存草稿的弹窗。<保存草稿>是保存后退出当前页面,<不保存>是不保存退出当前页面,<取消>是继续停留在当前页面。

以上就是关于App输入框内容的复盘总结。

如何在移动web模仿客户端给input输入框添加自定义清除按钮

项目有个需求就是在input输入框添加清除按钮,网上查找资料加上自己琢磨终于弄出来了。

灵感来自于 http://www.zhangxinxu.com/wordpress/?p=4077

由于项目已经上线给为了减少改动就改为通过js全局控制的方式,就不改html了。

css部分:

 1 /*输入框清除按钮*/
 2 .iss-close{
 3     position: absolute;
 4     top: 0;
 5     color: #ccc!important;
 6     display: none;
 7     cursor: pointer;
 8     z-index: 9999;
 9 }
10 input:valid + .iss-close {
11     display: inline-block;
12 }
13 .iss-close-hide{
14     display: none!important;
15 }

 

js部分:

 1 //统一添加清除按钮和清除按钮事件处理
 2 $("input").attr("required","required");
 3 $("input[type=file],input[type=reset],input[type=submit],input[type=password],input[type=image],input[type=radio],input[type=checkbox],input[type=hidden],input[type=button],input[type=date],input[type=month],input[types=date],input[types=month],input.iss-search,input[readonly],input[disabled]").removeAttr("required");
 4 setTimeout(function(){
 5     $("input[required]").each(function(){
 6         $(this).after(\'<a class="iss-close">\'+
 7             \'<i class="issfont iss-icon-font-round-close-fill"></i>\'+
 8             \'</a>\').next().css({"right":$(this).parent().css("paddingRight"),"marginRight":"-10px"})
 9     });
10 },1000);
11 
12 //模拟ios客户端获取焦点时显示清除按钮,离开焦点隐藏清除按钮
13 $("input[required]").focus(function(){
14     $(this).next(".iss-close").removeClass("iss-close-hide")
15 }).blur(function(){
16     $(this).next(".iss-close").addClass("iss-close-hide")
17 });
18 
19 //点击清除按钮
20 $(".iss-close").live("tap",function(e){
21     e.preventDefault();
22     e.stopPropagation();
23     $(this).prev("input").val("");
24 });

 

实现效果如下:  

 

以上是关于如何设计客户端App的输入框?的主要内容,如果未能解决你的问题,请参考以下文章

如何在移动web模仿客户端给input输入框添加自定义清除按钮

TCP程序设计基础

如何从客户端禁用 DevExpress MVC 组合框(JS / JQuery)

文本框textarea实时提示还可以输入多少文字

如何在输入框中显示数组值

Android仿微博实现添加话题的输入框