|
1 | | -# Form 表单 <el-tag text style="vertical-align: middle;margin-left:8px;" effect="plain">0.2.0</el-tag> |
| 1 | +# Form 表单 |
2 | 2 |
|
3 | 3 | 用于数据录入、校验,支持输入框、单选框、复选框、文件上传等类型,常见的 form 表单为`单元格`形式的展示,即左侧为表单的标题描述,右侧为表单的输入。 |
4 | 4 |
|
@@ -394,7 +394,7 @@ const submit = () => { |
394 | 394 |
|
395 | 395 | ## 指定字段校验 |
396 | 396 |
|
397 | | -`validate` 方法可以传入一个 `prop` 参数,指定校验的字段,可以实现在表单组件的`blur`、`change`等事件触发时对该字段的校验。 |
| 397 | +`validate` 方法可以传入一个 `prop` 参数,指定校验的字段,可以实现在表单组件的`blur`、`change`等事件触发时对该字段的校验。`prop` 参数也可以是一个字段数组,指定多个字段进行校验。 |
398 | 398 |
|
399 | 399 | ::: details 查看指定字段校验示例 |
400 | 400 | ::: code-group |
@@ -424,6 +424,7 @@ const submit = () => { |
424 | 424 | </wd-cell-group> |
425 | 425 | <view class="footer"> |
426 | 426 | <wd-button type="primary" size="large" @click="handleSubmit" block>提交</wd-button> |
| 427 | + <wd-button type="primary" size="large" @click="handleValidate" block>校验用户名和密码</wd-button> |
427 | 428 | </view> |
428 | 429 | </wd-form> |
429 | 430 | ``` |
@@ -459,6 +460,85 @@ function handleSubmit() { |
459 | 460 | console.log(error, 'error') |
460 | 461 | }) |
461 | 462 | } |
| 463 | + |
| 464 | +function handleValidate() { |
| 465 | + form |
| 466 | + .value!.validate(['value1', 'value2']) |
| 467 | + .then(({ valid, errors }) => { |
| 468 | + if (valid) { |
| 469 | + showSuccess({ |
| 470 | + msg: '校验通过' |
| 471 | + }) |
| 472 | + } |
| 473 | + }) |
| 474 | + .catch((error) => { |
| 475 | + console.log(error, 'error') |
| 476 | + }) |
| 477 | +} |
| 478 | +</script> |
| 479 | +``` |
| 480 | + |
| 481 | +```css [css] |
| 482 | +.footer { |
| 483 | + padding: 12px; |
| 484 | +} |
| 485 | +``` |
| 486 | + |
| 487 | +::: |
| 488 | + |
| 489 | +## 不对隐藏组件做校验 |
| 490 | + |
| 491 | +在表单中,如果某个组件使用 `v-if` 隐藏,则不会对该组件进行校验。 |
| 492 | + |
| 493 | +::: details 查看不对隐藏组件做校验示例 |
| 494 | +::: code-group |
| 495 | + |
| 496 | +```html [vue] |
| 497 | +<wd-form ref="form" :model="model" :rules="rules"> |
| 498 | + <wd-cell-group border> |
| 499 | + <wd-input |
| 500 | + label="用户名" |
| 501 | + label-width="100px" |
| 502 | + prop="value1" |
| 503 | + clearable |
| 504 | + v-model="model.value1" |
| 505 | + placeholder="请输入用户名" |
| 506 | + :rules="[{ required: true, message: '请填写用户名' }]" |
| 507 | + /> |
| 508 | + <wd-input |
| 509 | + v-if="showPassword" |
| 510 | + label="密码" |
| 511 | + label-width="100px" |
| 512 | + prop="value2" |
| 513 | + show-password |
| 514 | + clearable |
| 515 | + v-model="model.value2" |
| 516 | + placeholder="请输入密码" |
| 517 | + :rules="[{ required: true, message: '请填写密码' }]" |
| 518 | + /> |
| 519 | + </wd-cell-group> |
| 520 | + <view class="footer"> |
| 521 | + <wd-button type="primary" size="large" @click="handleSubmit" block>提交</wd-button> |
| 522 | + </view> |
| 523 | +</wd-form> |
| 524 | +``` |
| 525 | + |
| 526 | +```typescript [typescript] |
| 527 | +<script lang="ts" setup> |
| 528 | +import { useToast } from '@/uni_modules/wot-design-uni' |
| 529 | +import type { FormInstance } from '@/uni_modules/wot-design-uni/components/wd-form/types' |
| 530 | +import { reactive, ref } from 'vue' |
| 531 | + |
| 532 | +const { success: showSuccess } = useToast() |
| 533 | +const model = reactive<{ |
| 534 | + value1: string |
| 535 | + value2: string |
| 536 | +}>({ |
| 537 | + value1: '', |
| 538 | + value2: '' |
| 539 | +}) |
| 540 | + }) |
| 541 | +} |
462 | 542 | </script> |
463 | 543 | ``` |
464 | 544 |
|
@@ -938,7 +1018,7 @@ function handleIconClick() { |
938 | 1018 |
|
939 | 1019 | | 事件名称 | 说明 | 参数 | 最低版本 | |
940 | 1020 | | -------- | ------------------------------------------------------------------------------ | --------------- | -------- | |
941 | | -| validate | 验证表单,支持传入一个 prop 来验证单个表单项,不传入 prop 时,会验证所有表单项 | `prop?: string` | 0.2.0 | |
| 1021 | +| validate | 验证表单,支持传入一个 prop 来验证单个表单项,不传入 prop 时,会验证所有表单项,$LOWEST_VERSION$ 版本起支持传入数组 | `prop?: string\|string[]` | 0.2.0 | |
942 | 1022 | | reset | 重置校验结果 | - | 0.2.0 | |
943 | 1023 |
|
944 | 1024 | ## 外部样式类 |
|
0 commit comments