Files
ant-design/docs/pattern/form.html
T
2017-04-24 18:06:27 +08:00

121 lines
36 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="An enterprise-class UI design language and React-based implementation">
<meta name="description" content="A set of high-quality React components">
<meta name="description" content="One of best React UI library for enterprise background">
<title>Ant Design - A UI Design Language</title>
<script>
(function() {
function isLocalStorageNameSupported() {
var testKey = 'test';
var storage = window.localStorage;
try {
storage.setItem(testKey, '1');
storage.removeItem(testKey);
return true;
} catch (error) {
return false;
}
}
// 优先级提高到所有静态资源的前面,语言不对,加载其他静态资源没意义
var pathname = location.pathname;
function isZhCN(pathname) {
return /-cn\/?$/.test(pathname);
}
function getLocalizedPathname(path, zhCN) {
var pathname = path.startsWith('/') ? path : '/' + path;
if (!zhCN) { // to enUS
return /\/?index-cn/.test(pathname) ? '/' : pathname.replace('-cn', '');
} else if (pathname === '/') {
return '/index-cn';
} else if (pathname.endsWith('/')) {
return pathname.replace(/\/$/, '-cn/');
}
return pathname + '-cn';
}
// 兼容旧的 URL `?locale=...`
var queryString = location.search;
if (queryString) {
var isZhCNConfig = queryString.indexOf('zh-CN') > -1;
if (isZhCNConfig && !isZhCN(pathname)) {
location.pathname = getLocalizedPathname(pathname, isZhCNConfig)
}
}
// 首页无视链接里面的语言设置 https://github.com/ant-design/ant-design/issues/4552
if (isLocalStorageNameSupported() && (pathname === '/' || pathname === '/index-cn')) {
var lang = (window.localStorage && localStorage.getItem('locale')) || (navigator.language.toLowerCase() === 'zh-cn' ? 'zh-CN' : 'en-US');
// safari is 'zh-cn', while other browser is 'zh-CN';
if ((lang === 'zh-CN') !== isZhCN(pathname)) {
location.pathname = getLocalizedPathname(pathname, lang === 'zh-CN');
}
}
document.documentElement.className += isZhCN(pathname) ? 'zh-cn' : 'en-us';
})()
</script>
<link rel="icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.cnpmjs.org/css?family=Lato:400,700|Raleway"/>
<link rel="stylesheet" type="text/css" href="/index-1.css"/>
<link rel="stylesheet" type="text/css" href="/index-2.css"/>
<style id="nprogress-style">
#nprogress { display: none }
</style>
<!--[if lte IE 10]>
<script
src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,media-match/2.0.2/media.match.min.js"></script>
<![endif]-->
<script>
if (!window.Intl) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/intl/1.0.1/??Intl.js,locale-data/jsonp/en.js,locale-data/jsonp/zh.js">' + '<' + '/script>');
}
if (!window.Promise) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"' + '>' + '<' + '/' + 'script>');
}
// Enable Google Analytics
if (!location.port) {
/* eslint-disable */
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-72788897-1', 'auto');
ga('send', 'pageview');
/* eslint-enable */
}
</script>
<!-- Hotjar Tracking Code for ant.design -->
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:473408,hjsv:5};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');
</script>
</head>
<body>
<div id="react-content">
<div class="page-wrapper" data-reactroot="" data-reactid="1" data-react-checksum="2028029462"><header id="header" class="clearfix" data-reactid="2"><div class="ant-row" data-reactid="3"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-5 ant-col-lg-4" data-reactid="4"><a id="logo" href="/" data-reactid="5"><img alt="logo" src="https://t.alipayobjects.com/images/rmsweb/T1B9hfXcdvXXXXXXXX.svg" data-reactid="6"/><span data-reactid="7">Ant Design</span></a></div><div class="ant-col-xs-0 ant-col-sm-0 ant-col-md-19 ant-col-lg-20" data-reactid="8"><div id="search-box" data-reactid="9"><div class="ant-select ant-select-combobox ant-select-enabled" data-reactid="10"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" data-reactid="11"><div class="ant-select-selection__rendered" data-reactid="12"><div style="display:block;user-select:none;-webkit-user-select:none;" unselectable="unselectable" class="ant-select-selection__placeholder" data-reactid="13">Search Components...</div><ul data-reactid="14"><li class="ant-select-search ant-select-search--inline" data-reactid="15"><div class="ant-select-search__field__wrap" data-reactid="16"><input value="" class="ant-select-search__field" data-reactid="17"/><span class="ant-select-search__field__mirror" data-reactid="18"><!-- react-text: 19 --><!-- /react-text --><!-- react-text: 20 --> <!-- /react-text --></span></div></li></ul></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="21"><b data-reactid="22"></b></span></div></div></div><button type="button" class="ant-btn ant-btn-ghost ant-btn-sm lang" data-reactid="23"><span data-reactid="24">中文</span></button><div class="ant-select-sm version ant-select ant-select-enabled" data-reactid="25"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" tabindex="0" data-reactid="26"><div class="ant-select-selection__rendered" data-reactid="27"><div class="ant-select-selection-selected-value" title="2.9.3" style="display:block;opacity:1;" data-reactid="28">2.9.3</div></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="29"><b data-reactid="30"></b></span></div></div><ul class="ant-menu ant-menu-horizontal ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" id="nav" tabindex="0" data-reactid="31"><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="32"><a href="/" data-reactid="33"><span data-reactid="34">Home</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="35"><a href="/docs/spec/introduce" data-reactid="36"><span data-reactid="37">Guidlines</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="38"><a href="/docs/react/introduce" data-reactid="39"><span data-reactid="40">Components</span></a></li><li class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="41"><a href="/docs/pattern/navigation" data-reactid="42"><span data-reactid="43">Patterns</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="44"><a href="/docs/resource/download" data-reactid="45"><span data-reactid="46">Resources</span></a></li></ul></div></div></header><div class="main-wrapper" data-reactid="47"><div class="ant-row" data-reactid="48"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-4" data-reactid="49"><ul class="ant-menu ant-menu-inline aside-container ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" tabindex="0" data-reactid="50"><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="51"><a href="/docs/pattern/navigation" data-reactid="52">Navigation</a></li><li style="padding-left:24px;" class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="53"><a href="/docs/pattern/form" data-reactid="54">Form</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="55"><a href="/docs/pattern/list" data-reactid="56">List</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="57"><a href="/docs/pattern/table" data-reactid="58">Table</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="59"><a href="/docs/pattern/complex-table" data-reactid="60">Complex Table</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="61"><a href="/docs/pattern/advanced-search" data-reactid="62">Advanced Search</a></li></ul></div><div class="main-container ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-lg-20" data-reactid="63"><article class="markdown" data-reactid="64"><h1 data-reactid="65"><!-- react-text: 66 -->Form<!-- /react-text --><a class="edit-button" href="https://github.com/ant-design/ant-design/edit/master/docs/pattern/form.md" data-reactid="67"><i class="anticon anticon-edit" data-reactid="68"></i></a></h1><section class="markdown" data-reactid="69"><p data-reactid="70"><!-- react-text: 71 -->作为获取用户输入的重要交互方式,表单也承担将问题和答案进行配对的角色。<!-- /react-text --></p><p data-reactid="72"><!-- react-text: 73 -->设计者进行表单设计时,应当注意这几点:<!-- /react-text --></p><ol data-reactid="74"><li data-reactid="75"><p data-reactid="76"><!-- react-text: 77 -->确保用户了解要提供什么信息,以及为什么要提供这些信息。<!-- /react-text --></p><p data-reactid="78"><!-- react-text: 79 -->为初级用户/偶尔访问的用户提供白话作为『标签』;为领域专家提供专业术语作为『标签』。当需要用户提供敏感信息时,通过『输入提示』来说明系统为什么要这么做,eg:需要获取身份证号码、手机号码时。<!-- /react-text --></p></li><li data-reactid="80"><p data-reactid="81"><!-- react-text: 82 -->让用户能在上下文中获取信息,帮助他完成输入。<!-- /react-text --></p><p data-reactid="83"><!-- react-text: 84 -->使用『良好的默认值』、『结构化的格式』、『输入提示』、『输入提醒』等方式,避免让用户在空白中完成输入。<!-- /react-text --></p></li><li data-reactid="85"><p data-reactid="86"><!-- react-text: 87 -->对错误敏感,并尽可能宽容。<!-- /react-text --></p><p data-reactid="88"><!-- react-text: 89 -->通过不同的『校验』规则和形式进行反馈,避免用户在点击提交后才刚刚开始『校验』,让用户提前纠正错误;依据『容错格式』,允许用户以多种格式和语法输入,eg:用户在电话号码输入框中多输入了一个空格,系统存储时可以主动删掉空格,但是不需要告诉用户这是一个错误。<!-- /react-text --></p></li><li data-reactid="90"><p data-reactid="91"><!-- react-text: 92 -->不要提出不必要的问题。<!-- /react-text --></p></li></ol></section><section class="toc" data-reactid="93"><ul data-reactid="94"><li data-reactid="95"><a class="bisheng-toc-h2" href="#内容" title="内容" data-reactid="96"><!-- react-text: 97 -->内容<!-- /react-text --></a></li><li data-reactid="98"><a class="bisheng-toc-h2" href="#交互" title="交互" data-reactid="99"><!-- react-text: 100 -->交互<!-- /react-text --></a></li><li data-reactid="101"><a class="bisheng-toc-h2" href="#规格" title="规格" data-reactid="102"><!-- react-text: 103 -->规格<!-- /react-text --></a></li></ul></section><section class="markdown" data-reactid="104"><h2 id="内容" data-reactid="105"><span data-reactid="106"><!-- react-text: 107 -->内容<!-- /react-text --></span><a href="#内容" class="anchor" data-reactid="108">#</a></h2><div class="preview-image-boxes clearfix" data-reactid="109"><div class="preview-image-box" data-reactid="110"><div class="preview-image-wrapper" data-reactid="111"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/mLkQbODgVsdGUTe.png" alt="结构示例" data-reactid="112"/></div><div class="preview-image-title" data-reactid="113">结构示例</div><div class="preview-image-description" data-reactid="114"></div><!-- react-empty: 115 --></div></div><p data-reactid="116"><!-- react-text: 117 -->通常表单会有四个部分组成。<!-- /react-text --></p><ol data-reactid="118"><li data-reactid="119"><p data-reactid="120"><!-- react-text: 121 -->标签<!-- /react-text --></p></li><li data-reactid="122"><p data-reactid="123"><!-- react-text: 124 -->输入框<!-- /react-text --></p></li><li data-reactid="125"><p data-reactid="126"><!-- react-text: 127 -->校验反馈<!-- /react-text --></p></li><li data-reactid="128"><p data-reactid="129"><!-- react-text: 130 -->动作<!-- /react-text --></p></li></ol><blockquote data-reactid="131"><p data-reactid="132"><!-- react-text: 133 -->注:<!-- /react-text --><code data-reactid="134"><!-- react-text: 135 -->*<!-- /react-text --></code><!-- react-text: 136 --> 表明该项为必填项。<!-- /react-text --></p></blockquote><h2 id="交互" data-reactid="137"><span data-reactid="138"><!-- react-text: 139 -->交互<!-- /react-text --></span><a href="#交互" class="anchor" data-reactid="140">#</a></h2><h3 id="填空" data-reactid="141"><span data-reactid="142"><!-- react-text: 143 -->填空<!-- /react-text --></span><a href="#填空" class="anchor" data-reactid="144">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="145"><div class="preview-image-box" data-reactid="146"><div class="preview-image-wrapper" data-reactid="147"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/SdzCTaevNMvJFBR.png" alt="填空示例" data-reactid="148"/></div><div class="preview-image-title" data-reactid="149">填空示例</div><div class="preview-image-description" data-reactid="150"></div><!-- react-empty: 151 --></div></div><p data-reactid="152"><!-- react-text: 153 -->在一种描述性的上下文中出现输入项,可以帮助用户理解当前的状况,以及需要提供什么数据。<!-- /react-text --></p><h3 id="组合输入框" data-reactid="154"><span data-reactid="155"><!-- react-text: 156 -->组合输入框<!-- /react-text --></span><a href="#组合输入框" class="anchor" data-reactid="157">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="158"><div class="preview-image-box" data-reactid="159"><div class="preview-image-wrapper" data-reactid="160"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/waStvhMnuoqqsCE.png" alt="组合输入框示例" data-reactid="161"/></div><div class="preview-image-title" data-reactid="162">组合输入框示例</div><div class="preview-image-description" data-reactid="163"></div><!-- react-empty: 164 --></div></div><p data-reactid="165"><!-- react-text: 166 -->当两个输入框关联性很强时,可以前后拼接,减少页面空间。<!-- /react-text --></p><h3 id="对齐方式" data-reactid="167"><span data-reactid="168"><!-- react-text: 169 -->对齐方式<!-- /react-text --></span><a href="#对齐方式" class="anchor" data-reactid="170">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="171"><div class="preview-image-box" data-reactid="172"><div class="preview-image-wrapper" data-reactid="173"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/cjHTEtXFxUSdHnE.png" alt="对齐方式示例" data-reactid="174"/></div><div class="preview-image-title" data-reactid="175">对齐方式示例</div><div class="preview-image-description" data-reactid="176"></div><!-- react-empty: 177 --></div></div><p data-reactid="178"><!-- react-text: 179 -->在页面设计表单时,按钮组必须和输入框左对齐。<!-- /react-text --></p><h3 id="禁用主按钮" data-reactid="180"><span data-reactid="181"><!-- react-text: 182 -->禁用主按钮<!-- /react-text --></span><a href="#禁用主按钮" class="anchor" data-reactid="183">#</a></h3><p data-reactid="184"><!-- react-text: 185 -->当输入框非常少时(一般少于 3 个),如果用户没有在必填项中输入内容,可禁用『提交』等主按钮;当输入框非常多时(超过 5 项以上),不建议禁用主按钮。<!-- /react-text --></p><p data-reactid="186"><br data-reactid="187"/></p><div class="preview-image-boxes clearfix" data-reactid="188"><div class="preview-image-box" data-reactid="189"><div class="preview-image-wrapper" data-reactid="190"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/VabHKlbouFxSQXz.png" alt="未达字符标准时,主按钮禁用状态" data-reactid="191"/></div><div class="preview-image-title" data-reactid="192">未达字符标准时,主按钮禁用状态</div><div class="preview-image-description" data-reactid="193"></div><!-- react-empty: 194 --></div></div><div class="preview-image-boxes clearfix" data-reactid="195"><div class="preview-image-box" data-reactid="196"><div class="preview-image-wrapper" data-reactid="197"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/usdFxJmWDawqUuq.png" alt="达到字符标准时,主按钮可用状态" data-reactid="198"/></div><div class="preview-image-title" data-reactid="199">达到字符标准时,主按钮可用状态</div><div class="preview-image-description" data-reactid="200"></div><!-- react-empty: 201 --></div></div><p data-reactid="202"><!-- react-text: 203 -->当输入框非常少时,用户一输入就会有反馈,因而主按钮的禁用规则非常清晰,容易被用户理解。<!-- /react-text --></p><p data-reactid="204"><br data-reactid="205"/></p><div class="preview-image-boxes clearfix" data-reactid="206"><div class="preview-image-box" data-reactid="207"><div class="preview-image-wrapper" data-reactid="208"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/GwZhvOuXmwqUIUW.png" alt="不禁用示例" data-reactid="209"/></div><div class="preview-image-title" data-reactid="210">不禁用示例</div><div class="preview-image-description" data-reactid="211"></div><!-- react-empty: 212 --></div></div><p data-reactid="213"><!-- react-text: 214 -->当输入框非常多时(尤其是输入项中交叉了必填项和非必填项),整个反馈链路冗长又复杂,禁用规则难以被识别,容易引起困惑。<!-- /react-text --></p><h3 id="结构化的格式" data-reactid="215"><span data-reactid="216"><!-- react-text: 217 -->结构化的格式<!-- /react-text --></span><a href="#结构化的格式" class="anchor" data-reactid="218">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="219"><div class="preview-image-box" data-reactid="220"><div class="preview-image-wrapper" data-reactid="221"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/SQgGfreRAqPZPsm.png" alt="结构化的格式示例" data-reactid="222"/></div><div class="preview-image-title" data-reactid="223">结构化的格式示例</div><div class="preview-image-description" data-reactid="224"></div><!-- react-empty: 225 --></div></div><p data-reactid="226"><!-- react-text: 227 -->用户对输入的内容很熟悉,且系统不希望接受任何偏离期望的格式。<!-- /react-text --></p><h3 id="输入提示-&amp;-输入提醒" data-reactid="228"><span data-reactid="229"><!-- react-text: 230 -->输入提示 &amp; 输入提醒<!-- /react-text --></span><a href="#输入提示-&amp;-输入提醒" class="anchor" data-reactid="231">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="232"><div class="preview-image-box" style="width:50%;" data-reactid="233"><div class="preview-image-wrapper" data-reactid="234"><img class="preview-img inline" src="https://os.alipayobjects.com/rmsportal/cTlmdEprGSzMZfs.png" alt="输入提示示例" data-reactid="235"/></div><div class="preview-image-title" data-reactid="236">输入提示示例</div><div class="preview-image-description" data-reactid="237">在输入框激活后,输入提示一直出现至该输入框失去焦点。</div><!-- react-empty: 238 --></div><div class="preview-image-box" style="width:50%;" data-reactid="239"><div class="preview-image-wrapper" data-reactid="240"><img class="preview-img inline" src="https://os.alipayobjects.com/rmsportal/QPhvLWfMbLTvjRw.png" alt="输入提醒示例" data-reactid="241"/></div><div class="preview-image-title" data-reactid="242">输入提醒示例</div><div class="preview-image-description" data-reactid="243">在输入框激活后,输入提醒不要马上消失,等用户完成第一个词输入后再消失。</div><!-- react-empty: 244 --></div></div><p data-reactid="245"><!-- react-text: 246 -->输入提示:不希望在标签上放置太多文字进行解释,同时只有标签又会引起误解。<!-- /react-text --></p><p data-reactid="247"><!-- react-text: 248 -->输入提醒:提醒用户该控件的目的或所需格式,由于在用户输入后提醒就会消失,所以适用在用户对内容比较熟悉时。<!-- /react-text --></p><h3 id="密码加强计" data-reactid="249"><span data-reactid="250"><!-- react-text: 251 -->密码加强计<!-- /react-text --></span><a href="#密码加强计" class="anchor" data-reactid="252">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="253"><div class="preview-image-box" data-reactid="254"><div class="preview-image-wrapper" data-reactid="255"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/wKpOgeyyoOUeCrk.png" alt="密码强度示例" data-reactid="256"/></div><div class="preview-image-title" data-reactid="257">密码强度示例</div><div class="preview-image-description" data-reactid="258"></div><!-- react-empty: 259 --></div></div><p data-reactid="260"><!-- react-text: 261 -->提供关于密码强度和有效性的及时反馈,适用在注册页面时的密码输入框。<!-- /react-text --></p><h3 id="校验" data-reactid="262"><span data-reactid="263"><!-- react-text: 264 -->校验<!-- /react-text --></span><a href="#校验" class="anchor" data-reactid="265">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="266"><div class="preview-image-box" style="width:50%;" data-reactid="267"><div class="preview-image-wrapper" data-reactid="268"><img class="preview-img inline" src="https://os.alipayobjects.com/rmsportal/urCdIJFuNYCenqH.png" data-reactid="269"/></div><div class="preview-image-title" data-reactid="270"></div><div class="preview-image-description" data-reactid="271">输入时的实时校验。</div><!-- react-empty: 272 --></div><div class="preview-image-box" style="width:50%;" data-reactid="273"><div class="preview-image-wrapper" data-reactid="274"><img class="preview-img inline" src="https://os.alipayobjects.com/rmsportal/KkcSBkbTJirIxCw.png" data-reactid="275"/></div><div class="preview-image-title" data-reactid="276"></div><div class="preview-image-description" data-reactid="277">输入框失去焦点后的校验。</div><!-- react-empty: 278 --></div></div><div class="preview-image-boxes clearfix" data-reactid="279"><div class="preview-image-box" data-reactid="280"><div class="preview-image-wrapper" data-reactid="281"><img class="preview-img" src="https://zos.alipayobjects.com/rmsportal/xTtVSREbASRMstTggVGD.png" data-reactid="282"/></div><div class="preview-image-title" data-reactid="283"></div><div class="preview-image-description" data-reactid="284">点击『提交』后,系统将处理结果直接在页面上进行反馈(统计错误数量和标记错误内容)。</div><!-- react-empty: 285 --></div></div><p data-reactid="286"><!-- react-text: 287 -->通过不同的『校验』规则和形式进行反馈,避免用户在点击提交后才刚刚开始『校验』,让用户提前纠正错误。<!-- /react-text --></p><h3 id="字数校验框" data-reactid="288"><span data-reactid="289"><!-- react-text: 290 -->字数校验框<!-- /react-text --></span><a href="#字数校验框" class="anchor" data-reactid="291">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="292"><div class="preview-image-box" data-reactid="293"><div class="preview-image-wrapper" data-reactid="294"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/JxzQIRfMCtMjuaH.png" alt="字数校验框示例" data-reactid="295"/></div><div class="preview-image-title" data-reactid="296">字数校验框示例</div><div class="preview-image-description" data-reactid="297"></div><!-- react-empty: 298 --></div></div><p data-reactid="299"><!-- react-text: 300 -->用于统计当前输入长度,以及是否超过系统阈值。<!-- /react-text --></p><h2 id="规格" data-reactid="301"><span data-reactid="302"><!-- react-text: 303 -->规格<!-- /react-text --></span><a href="#规格" class="anchor" data-reactid="304">#</a></h2><h3 id="间距" data-reactid="305"><span data-reactid="306"><!-- react-text: 307 -->间距<!-- /react-text --></span><a href="#间距" class="anchor" data-reactid="308">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="309"><div class="preview-image-box" data-reactid="310"><div class="preview-image-wrapper" data-reactid="311"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/dlTiHzZvCGRbMzL.png" alt="间隔示例" data-reactid="312"/></div><div class="preview-image-title" data-reactid="313">间隔示例</div><div class="preview-image-description" data-reactid="314"></div><!-- react-empty: 315 --></div></div><p data-reactid="316"><!-- react-text: 317 -->典型表单的间隔规范。<!-- /react-text --></p><h3 id="输入框宽度" data-reactid="318"><span data-reactid="319"><!-- react-text: 320 -->输入框宽度<!-- /react-text --></span><a href="#输入框宽度" class="anchor" data-reactid="321">#</a></h3><div class="preview-image-boxes clearfix" data-reactid="322"><div class="preview-image-box" style="width:50%;" data-reactid="323"><div class="preview-image-wrapper good" data-reactid="324"><img class="preview-img good" src="https://os.alipayobjects.com/rmsportal/vypllNQZsEHRszB.png" alt="正确示例" data-reactid="325"/></div><div class="preview-image-title" data-reactid="326">正确示例</div><div class="preview-image-description" data-reactid="327"></div><!-- react-empty: 328 --></div><div class="preview-image-box" style="width:50%;" data-reactid="329"><div class="preview-image-wrapper bad" data-reactid="330"><img class="preview-img bad" src="https://os.alipayobjects.com/rmsportal/XSLwnrlLbKFjiNj.png" alt="错误示例" data-reactid="331"/></div><div class="preview-image-title" data-reactid="332">错误示例</div><div class="preview-image-description" data-reactid="333"></div><!-- react-empty: 334 --></div></div><p data-reactid="335"><!-- react-text: 336 -->当内容可预知,可以根据内容长短进行定义其落在多少个栅格上。<!-- /react-text --></p><p data-reactid="337"><br data-reactid="338"/></p><h3 id="对齐方式" data-reactid="339"><span data-reactid="340"><!-- react-text: 341 -->对齐方式<!-- /react-text --></span><a href="#对齐方式" class="anchor" data-reactid="342">#</a></h3><p data-reactid="343"><!-- react-text: 344 -->无论左对齐、右对齐还是顶部对齐,都有其优缺点和应用场景,所以正确的解决方案取决于具体目标和制约因素,诸如:希望用户加快或者降低填写速度(有时设计者希望用户深思熟虑每个输入)、屏幕显示的限制、本地化考虑等多种因素。<!-- /react-text --></p><p data-reactid="345"><br data-reactid="346"/></p><div class="preview-image-boxes clearfix" data-reactid="347"><div class="preview-image-box" data-reactid="348"><div class="preview-image-wrapper" data-reactid="349"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/UxGJfenYBKvkEEB.png" alt="右对齐(推荐)" data-reactid="350"/></div><div class="preview-image-title" data-reactid="351">右对齐(推荐)</div><div class="preview-image-description" data-reactid="352"></div><!-- react-empty: 353 --></div></div><p data-reactid="354"><!-- react-text: 355 -->右对齐(推荐)。<!-- /react-text --></p><ul data-reactid="356"><li data-reactid="357"><p data-reactid="358"><!-- react-text: 359 -->优点:节约垂直空间。<!-- /react-text --></p></li><li data-reactid="360"><p data-reactid="361"><!-- react-text: 362 -->缺点:降低可读性;标签长度和输入框弹性小。<!-- /react-text --></p></li><li data-reactid="363"><p data-reactid="364"><!-- react-text: 365 -->场景:既要减少垂直空间,又要加快填写速度。<!-- /react-text --></p></li></ul><p data-reactid="366"><br data-reactid="367"/></p><div class="preview-image-boxes clearfix" data-reactid="368"><div class="preview-image-box" data-reactid="369"><div class="preview-image-wrapper" data-reactid="370"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/AsyyNKormNdEMLi.png" alt="顶部对齐" data-reactid="371"/></div><div class="preview-image-title" data-reactid="372">顶部对齐</div><div class="preview-image-description" data-reactid="373"></div><!-- react-empty: 374 --></div></div><p data-reactid="375"><!-- react-text: 376 -->顶部对齐。<!-- /react-text --></p><ul data-reactid="377"><li data-reactid="378"><p data-reactid="379"><!-- react-text: 380 -->优点:有最快的浏览和处理速度;标签长度弹性大。<!-- /react-text --></p></li><li data-reactid="381"><p data-reactid="382"><!-- react-text: 383 -->缺点:非常占垂直空间。<!-- /react-text --></p></li><li data-reactid="384"><p data-reactid="385"><!-- react-text: 386 -->场景:希望用户快速填写表单,完成任务。<!-- /react-text --></p></li></ul><p data-reactid="387"><br data-reactid="388"/></p><div class="preview-image-boxes clearfix" data-reactid="389"><div class="preview-image-box" data-reactid="390"><div class="preview-image-wrapper" data-reactid="391"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/eqUyDExbRlAQoas.png" alt="左对齐" data-reactid="392"/></div><div class="preview-image-title" data-reactid="393">左对齐</div><div class="preview-image-description" data-reactid="394"></div><!-- react-empty: 395 --></div></div><p data-reactid="396"><!-- react-text: 397 -->左对齐。<!-- /react-text --></p><ul data-reactid="398"><li data-reactid="399"><p data-reactid="400"><!-- react-text: 401 -->优点:文字开头按阅读视线对齐,方便阅读;节约垂直空间。<!-- /react-text --></p></li><li data-reactid="402"><p data-reactid="403"><!-- react-text: 404 -->缺点:填写速度慢;标签长度和输入框弹性小。<!-- /react-text --></p></li><li data-reactid="405"><p data-reactid="406"><!-- react-text: 407 -->场景:希望用户放慢速度,仔细思考表单中的每个输入框。<!-- /react-text --></p></li></ul></section></article></div></div><div class="ant-row" data-reactid="408"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-md-offset-6 ant-col-lg-20 ant-col-lg-offset-4" data-reactid="409"><section class="prev-next-nav" data-reactid="410"><a class="prev-page" href="/docs/pattern/navigation" data-reactid="411">Navigation</a><a class="next-page" href="/docs/pattern/list" data-reactid="412">List</a></section></div></div></div><footer id="footer" data-reactid="413"><ul data-reactid="414"><li data-reactid="415"><h2 data-reactid="416"><i class="anticon anticon-github" data-reactid="417"></i><!-- react-text: 418 --> GitHub<!-- /react-text --></h2><div data-reactid="419"><a target="_blank " href="https://github.com/ant-design/ant-design" data-reactid="420"><span data-reactid="421">Repository</span></a></div><div data-reactid="422"><a target="_blank " href="https://ant.design/docs/react/customize-theme" data-reactid="423"><span data-reactid="424">Customize Theme</span></a></div><div data-reactid="425"><a target="_blank " href="https://github.com/websemantics/awesome-ant-design" data-reactid="426"><span data-reactid="427">Awesome Ant Design</span></a></div></li><li data-reactid="428"><h2 data-reactid="429"><i class="anticon anticon-link" data-reactid="430"></i><!-- react-text: 431 --> <!-- /react-text --><span data-reactid="432">Links</span></h2><div data-reactid="433"><a href="https://design.alipay.com/" data-reactid="434"><span data-reactid="435">Ant Financial Design Platform</span></a></div><div data-reactid="436"><a href="http://mobile.ant.design" data-reactid="437">Ant Design Mobile</a><span data-reactid="438"> - </span><span data-reactid="439">Mobile UI</span></div><div data-reactid="440"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva" data-reactid="441">dva</a><!-- react-text: 442 --> - <!-- /react-text --><span data-reactid="443">Framework</span></div><div data-reactid="444"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva-cli" data-reactid="445">dva-cli</a><!-- react-text: 446 --> -<!-- /react-text --><span data-reactid="447">Developer Tools</span></div><div data-reactid="448"><a target="_blank" rel="noopener noreferrer" href="https://eggjs.org/" data-reactid="449">Egg</a><span data-reactid="450"> - </span><span data-reactid="451">Enterprise Node Framework</span></div><div data-reactid="452"><a target="_blank" rel="noopener noreferrer" href="https://antv.alipay.com/" data-reactid="453">AntV</a><span data-reactid="454"> - </span><span data-reactid="455">Data Visualization</span></div><div data-reactid="456"><a target="_blank" rel="noopener noreferrer" href="http://motion.ant.design" data-reactid="457">Ant Motion</a><span data-reactid="458"> - </span><span data-reactid="459">Motion Soluction</span></div><div data-reactid="460"><a target="_blank" rel="noopener noreferrer" href="http://library.ant.design/" data-reactid="461">AntD Library</a><span data-reactid="462"> - </span><span data-reactid="463">Axure library</span></div><div data-reactid="464"><a target="_blank" rel="noopener noreferrer" href="http://ux.ant.design" data-reactid="465">Ant UX</a><span data-reactid="466"> - </span><span data-reactid="467">Sitemap Template</span></div></li><li data-reactid="468"><h2 data-reactid="469"><i class="anticon anticon-customer-service" data-reactid="470"></i><!-- react-text: 471 --> <!-- /react-text --><span data-reactid="472">Community</span></h2><div data-reactid="473"><a href="/changelog" data-reactid="474"><span data-reactid="475">Change Log</span></a></div><div data-reactid="476"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/wiki/FAQ" data-reactid="477"><span data-reactid="478">FAQ</span></a></div><div data-reactid="479"><a target="_blank" rel="noopener noreferrer" href="https://gitter.im/ant-design/ant-design" data-reactid="480"><span data-reactid="481">Chat Room (中文)</span></a></div><div data-reactid="482"><a target="_blank" rel="noopener noreferrer" href="https://gitter.im/ant-design/ant-design-english" data-reactid="483"><span data-reactid="484">Chat Room (English)</span></a></div><div data-reactid="485"><a target="_blank" rel="noopener noreferrer" href="http://new-issue.ant.design/" data-reactid="486"><span data-reactid="487">Bug Report</span></a></div><div data-reactid="488"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/issues" data-reactid="489"><span data-reactid="490">Issues</span></a></div><div data-reactid="491"><a target="_blank" rel="noopener noreferrer" href="http://stackoverflow.com/questions/tagged/antd" data-reactid="492"><span data-reactid="493">StackOverflow</span></a></div><div data-reactid="494"><a target="_blank" rel="noopener noreferrer" href="https://segmentfault.com/t/antd" data-reactid="495"><span data-reactid="496">SegmentFault</span></a></div></li><li data-reactid="497"><h2 data-reactid="498"><!-- react-text: 499 -->Copyright © <!-- /react-text --><!-- react-text: 500 -->2017<!-- /react-text --></h2><div data-reactid="501"><span data-reactid="502">Created by AIUX</span></div><div data-reactid="503"><!-- react-text: 504 -->Built with <!-- /react-text --><a target="_blank" rel="noopener noreferrer" href="https://github.com/benjycui/bisheng" data-reactid="505">BiSheng</a></div></li></ul></footer></div>
</div>
<script src="/common.js"></script>
<script src="/index.js"></script>
</body>
</html>