“ vee-validate”:“ ^ 2.2.11”, “ vue”:“ ^ 2.5.16”,
我需要一个简单的规则,该规则应该是输入必须是必需的,数字且大于0。
因此,在这种情况下,如果我输入0,它将正确验证(返回false),但是如果我输入类似0.0的内容,vv将返回true。即使删除is_not:0,结果仍然相同。
<sui-input
type="text"
v-validate="'required|decimal|is_not:0'"
name="cellSize"
v-model="cellSize">
答案 0 :(得分:0)
您是否尝试使用正则表达式排除0?
示例:
<input v-validate="{ required: true, regex: /[1-9]*/ }">
答案 1 :(得分:0)
我找到了这个解决方案(保留所有大于0的内容)
<sui-input
type="text"
v-validate="{ required: true, regex: /^(?=.*[1-9])\d+(\.\d+)?$/ }"
name="cellSize"
v-model="cellSize">
</sui-input>
答案 2 :(得分:0)
您还可以创建一个自定义规则,如下所示。
created() {
this.$validator.extend(
'greaterThanZero',{
getMessage: field => field + ' needs to be > zero.',
validate: (value) => {
// value must be > zero
if (value <= 0 ) return false;
return true;
}
});
},
然后在您的字段实例上调用代码。
v-validate="'required|decimal|greaterThanZero'"
更多有关自定义规则的信息: https://baianat.github.io/vee-validate/guide/custom-rules.html#creating-a-custom-rule
,或者您也可以使用以下样式(例如,如果要添加多个规则)。在此处,代码将插入到您进行导入的区域中,即直接在脚本标签之后。
import { Validator } from 'vee-validate';
Validator.extend(
'greaterThanZero',
(value) => {
// value must be > zero
if (value <= 0 ) return false;
return true;
}
);
let instance = new Validator({ greaterThanZeroField: 'greaterThanZero' });
您现在可以使用以下代码在上方的样式中添加第二条规则:
instance.extend('greaterThanMillion', {
getMessage: field => field +' needs to be > 1,000,000',
validate: value => (value > 1000000 ? false : true)
});
instance.attach({
name: 'greaterThanMillionField',
rules: 'greaterThanMillion'
});
再次可以将第二条规则称为:
v-validate="'required|decimal|greaterThanMillion'"