坐标验证
<p>我有一个用于坐标的文本字段,我想使用vee-validate(3.x)和Vue 2对其进行验证。我尝试了两种不同的方法,但都没有成功。坐标的格式应该是"整数或浮点数,整数或浮点数",即"纬度,经度"(只有一个逗号,多个逗号应该被标记为无效)。</p><p>这是文本字段:</p><p><br /></p>
<pre class="brush:html;toolbar:false;"><ValidationProvider v-slot="{ errors }" rules="coordinates_validation">
<v-text-field
:label="$t('stations.position')"
:value="positionValue"
:error-messages="errors"
@input="$emit('update:station', { ...station, ...getLatLong($event) })"
@keypress="justNumber"
/>
</ValidationProvider>
</pre>
<p>这是我尝试过的两种方法,但都没有成功:</p>
<pre class="brush:js;toolbar:false;">extend("coordinates_validation", {
validate: (value) => {
const coordinates = value.split(",");
if (coordinates.length !== 2) {
return false;
}
const trimmedCoordinates = coordinates.map((coord) => coord.trim());
const isValidCoordinate = (coord) => {
return !Number.isNaN(parseFloat(coord)) && Number.isFinite(coord);
};
return (
trimmedCoordinates.every(isValidCoordinate) &&
!trimmedCoordinates.some((coord) => coord === "")
);
},
message: i18n.tc("validations.coordinates_incorrect_format"),
});
</pre>
<pre class="brush:js;toolbar:false;">extend('coordinates_validation', {
validate: (value) => {
const regex = /^d+(.d+)?,s*d+(.d+)?$/;
return regex.test(value);
},
message: i18n.tc('validations.coordinates_incorrect_format'),
});
</pre>
<p>有人知道如何解决这个问题吗?</p>