ZBLOG

在 Vue.js 中,如果你想要在用户手动输入后进行必填校验,可以通过动态更新规则来实现。你可以使用 v-model 来双向绑定输入框的值,同时结合 @blur 事件(当输入框失去焦点时触发)来检查当前的输入值是否满足要求。

以下是如何调整你的代码以实现手动输入后的必填校验的示例:

  1. <template>
  2. <div
  3. class="loanInfo"
  4. :style="isCustomerNotFound && productRows.length > 0 ? { height: '100px' } : {}"
  5. v-if="!isEditing"
  6. >
  7. <a-row v-if="isCustomerNotFound" v-for="(item, index) in productRows" :key="index">
  8. <a-col :span="12" v-if="isCustomerNotFound">
  9. <a-form-item
  10. label="产品名称"
  11. name={`productName-${index}`}
  12. :rules="[{
  13. required: true,
  14. message: '请手动输入产品名称!',
  15. validator: (rule, value) => {
  16. return value ? Promise.resolve() : Promise.reject('请手动输入产品名称!');
  17. }
  18. }]"
  19. style="width: 101%"
  20. >
  21. <a-input
  22. v-model:value="item.productName"
  23. @blur="validateField(`productName-${index}`)"
  24. />
  25. </a-form-item>
  26. </a-col>
  27. <a-col :span="12" v-if="isCustomerNotFound">
  28. <a-form-item
  29. label="借据号"
  30. name={`loanInfoCode-${index}`}
  31. :rules="[{
  32. required: true,
  33. message: '请手动输入借据号!',
  34. validator: (rule, value) => {
  35. return value ? Promise.resolve() : Promise.reject('请手动输入借据号!');
  36. }
  37. }]"
  38. style="width: 102%; margin-left: -5px"
  39. >
  40. <a-input
  41. v-model:value="item.loanInfoCode"
  42. @blur="validateField(`loanInfoCode-${index}`)"
  43. />
  44. </a-form-item>
  45. </a-col>
  46. </a-row>
  47. <span
  48. v-if="productRows.length > 0 && isCustomerNotFound"
  49. class="jiahao"
  50. @click="addProductRow"
  51. >
  52. + 添加产品
  53. </span>
  54. </div>
  55. </template>
  56. <script setup>
  57. import { ref } from 'vue';
  58. // 假设这些是你的状态管理变量,你可以根据自己的需求修改它们。
  59. const isCustomerNotFound = ref(true); // 根据实际逻辑设定
  60. const productRows = ref([{ productName: '', loanInfoCode: '' }]); // 示例数据,初始一个空对象
  61. function addProductRow() {
  62. productRows.value.push({ productName: '', loanInfoCode: '' });
  63. }
  64. // 校验字段函数
  65. function validateField(name) {
  66. // 获取 form 实例进行验证,也许你需要引入 Form 实例或用 refs 引用 form 表单组件。
  67. }
  68. </script>
  69. <style scoped>
  70. .jiahao {
  71. cursor: pointer;
  72. }
  73. </style>

注意事项:

  1. 在表单项中定义 name 时,可以使用动态的方式,例如:name={productName-${index}},这样可以确保每个表单项有唯一标识。
  2. 使用了 @blur 事件来触发字段验证,这样一旦用户完成了对该字段的编辑并离开,该字段就会被验证。
  3. 自定义校验函数直接在规则中处理了异步返回,满足条件则 resolve,否则 reject。
  4. 确保你的 <a-form> 使用正确,并与 Vue 的响应式系统兼容,以确保验证能正常工作。

这样,你可以在用户手动填写信息后实时进行必填校验,并显示相关错误信息。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22861

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?