表单示例
展示各种表单组件的使用方法和组合使用场景。
完整表单示例
包含多种表单控件的完整表单。
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>表单示例</title>
<link rel="stylesheet" href="./sanoui.min.css">
</head>
<body>
<div style="padding: 20px; max-width: 800px; margin: 0 auto;">
<h1>用户信息表单</h1>
<form class="sa-form" id="userForm" style="max-width: 600px;">
<!-- 用户名 -->
<div class="sa-form-item">
<label class="sa-form-item__label">用户名</label>
<div class="sa-form-item__content">
<div class="sa-input"
data-prop="username"
data-placeholder="请输入用户名"
data-clearable="true"></div>
</div>
</div>
<!-- 密码 -->
<div class="sa-form-item">
<label class="sa-form-item__label">密码</label>
<div class="sa-form-item__content">
<div class="sa-input"
data-prop="password"
data-type="password"
data-show-password="true"
data-placeholder="请输入密码"></div>
</div>
</div>
<!-- 性别(单选框) -->
<div class="sa-form-item">
<label class="sa-form-item__label">性别</label>
<div class="sa-form-item__content">
<label class="sa-radio"
data-radio
data-label="男"
data-value="male"
data-name="gender"
data-checked="true">
</label>
<label class="sa-radio"
data-radio
data-label="女"
data-value="female"
data-name="gender"
style="margin-left: 20px;">
</label>
</div>
</div>
<!-- 爱好(复选框) -->
<div class="sa-form-item">
<label class="sa-form-item__label">爱好</label>
<div class="sa-form-item__content">
<label class="sa-checkbox"
data-checkbox
data-label="阅读"
data-value="reading">
</label>
<label class="sa-checkbox"
data-checkbox
data-label="运动"
data-value="sports"
style="margin-left: 20px;">
</label>
<label class="sa-checkbox"
data-checkbox
data-label="音乐"
data-value="music"
style="margin-left: 20px;">
</label>
</div>
</div>
<!-- 城市(下拉选择) -->
<div class="sa-form-item">
<label class="sa-form-item__label">城市</label>
<div class="sa-form-item__content">
<div class="sa-select"
data-select
data-options='[{"label":"北京","value":"beijing"},{"label":"上海","value":"shanghai"},{"label":"广州","value":"guangzhou"}]'
style="width: 200px;">
</div>
</div>
</div>
<!-- 生日(日期选择) -->
<div class="sa-form-item">
<label class="sa-form-item__label">生日</label>
<div class="sa-form-item__content">
<div class="sa-date-picker"
data-date-picker
data-placeholder="请选择生日"
style="width: 200px;">
</div>
</div>
</div>
<!-- 通知开关 -->
<div class="sa-form-item">
<label class="sa-form-item__label">接收通知</label>
<div class="sa-form-item__content">
<div class="sa-switch"
data-switch
data-checked="true"
data-labels='["关闭", "开启"]'>
</div>
</div>
</div>
<!-- 提交按钮 -->
<div class="sa-form-item">
<div class="sa-form-item__content">
<button type="submit" class="sa-button" data-button data-type="primary">提交</button>
<button type="button" class="sa-button" data-button id="resetBtn">重置</button>
</div>
</div>
</form>
</div>
<script src="./sanoui.min.js"></script>
<script>
const form = new SaForm('#userForm', {
rules: {
username: [
{ required: true, message: '请输入用户名' },
{ min: 3, max: 20, message: '用户名长度为 3-20 个字符' }
],
password: [
{ required: true, message: '请输入密码' },
{ min: 6, message: '密码至少 6 个字符' }
]
},
onSubmit: (values, valid) => {
if (valid) {
console.log('表单数据:', values);
// 提交表单
}
}
});
document.getElementById('resetBtn').addEventListener('click', () => {
form.resetFields();
});
SA.init('body');
</script>
</body>
</html>搜索表单示例
结合输入框、选择器和按钮的搜索表单。
html
<div style="padding: 20px; background: #f5f7fa; border-radius: 8px;">
<div style="display: flex; gap: 10px; flex-wrap: wrap; align-items: center;">
<!-- 关键词搜索 -->
<div class="sa-input"
data-placeholder="请输入关键词"
data-prefix-icon="search"
style="flex: 1; min-width: 200px; max-width: 300px;">
</div>
<!-- 分类选择 -->
<div class="sa-select"
data-select
data-placeholder="全部分类"
data-options='[{"label":"全部","value":""},{"label":"分类一","value":"1"},{"label":"分类二","value":"2"}]'
style="width: 150px;">
</div>
<!-- 日期范围 -->
<div class="sa-date-picker"
data-date-picker
data-placeholder="开始日期"
style="width: 150px;">
</div>
<span style="color: #909399;">至</span>
<div class="sa-date-picker"
data-date-picker
data-placeholder="结束日期"
style="width: 150px;">
</div>
<!-- 搜索按钮 -->
<button class="sa-button"
data-button
data-type="primary"
data-icon="search">
搜索
</button>
<!-- 重置按钮 -->
<button class="sa-button"
data-button>
重置
</button>
</div>
</div>
<script>
SA.init('body');
</script>