【问题标题】:Quasar input give multiple validationsQuasar 输入提供多个验证
【发布时间】:2022-08-18 15:40:07
【问题描述】:
     <q-input
        v-model=\"userForm.mobile\"
        type=\"text\"
        label=\"Mobile\"
        counter
        maxlength=\"10\"
        color=\"info\"
        lazy-rules
        :rules=\"[
          (val) => (val && val.length > 0) || \'Mobile number is required\',
          (val) =>
            (typeof val !== number) ||
            \'Mobile number should be valid\',
        ]\"
      />

我正在尝试进行 2 次验证,但这不起作用, 如果它为空或不是数字,则尝试返回错误 如果有人可以提供帮助,真的很感激。

    标签: javascript vue.js quasar-framework


    【解决方案1】:

    看起来流程很好,但是您拼错了 Number 关键字。 强烈建议在方法部分定义您的验证方法。我给你写了一个简单的例子:

    <template>
      <q-form @submit="submit">
        <q-input
          counter
          lazy-rules
          type="text"
          label="Mobile"
          maxlength="10"
          color="info"
          mask="##########"
          :rules="[requiredRule, mobileRule]"
          v-model="userForm.mobile"
        />
        <q-btn
          type="submit"
          label="Submit"
        />
      </q-form>
    </template>
    
    <script>
    export default {
      name: 'BaseInputValidation',
      data() {
        return {
          userForm: {
            mobile: null,
          },
        };
      },
      methods: {
        requiredRule(val) {
          if (!val) {
            return 'Mobile number is required';
          }
          return true;
        },
        mobileRule(val) {
          if (!/^\d{10}$/.test(val)) {
            return 'Mobile number should be valid';
          }
          return true;
        },
        submit() {
          // Do submit
        },
      },
    };
    </script>
    

    我将规则分成提高渲染速度的方法。您还可以合并规则函数或在全局文件中定义它们以在其他地方重用。

    我填充了掩码道具以将输入值限制为仅十个数字的输入。

    我用一个普通的正则表达式来检查数字,用更好的替换它:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      相关资源
      最近更新 更多