html5 jquery设置vaild,jQuery .valid()无效? (验证插件)

我使用jQuery Validation Plugin并且我的代码没有按预期工作。我想要的是当我单击提交按钮时,程序将检查表单是否正确填写并包含一个URL然后运行一个功能。在这种情况下,它总是alert('true)。

$(document).ready(function(){

$('#button1').submit(function() {

if($("#button1").valid()){

alert('true');

}

else{

alert('false');

}

});

});

不确定这是否相关,但我使用的是Flask和WTForms:

形式:

class SVN_Path(Form):

svn_url1=StringField('SVN Directory:',[validators.URL()])

svn_url2=StringField('SVN Directory:',[validators.URL()])

HTML:

{{form1.hidden_tag()}}

{{ form1.svn_url1.label }}

{{ form1.svn_url1 }}

{{ form1.svn_url2.label }}

{{ form1.svn_url2 }}

更新

$('#button1').submit(function(){

var is_valid = $(this).validate({

rules: {

svn_url1: {

required: true,

url: true

},

svn_url2: {

required: true,

url: true

}

}

});

if(is_valid){

alert('true');

}

else{

alert('false');

}

});

});

我尝试了dirn建议的内容,但即使两个字段都为空,这仍然会返回true。

这段代码的作用是在用户提交表单`updateForm`之前,先通过`$refs.updateForm.validate()`方法验证表单内容的有效性。如果验证通过 (`vaild` 为 `true`),则发起`request`请求。 如果你发现需要点击两次才会触发请求,可能是以下几个原因: 1. **默认验证状态**:Vue的表单验证默认设置可能是等待用户交互后再进行验证。第一次点击可能只是初始化了验证,第二次点击时验证结果才可用。 2. **异步验证**:`validate()`方法可能是异步操作,意味着它不会立即返回结果,而是当你手动触发(如再次点击或者失去焦点等条件)后,结果才会更新。 3. **回调函数延迟**:`validate`的回调可能在内部有一个延迟执行的过程,这可能会导致首次调用时不执行请求。 为了解决这个问题,你可以尝试以下方法: - **同步验证**:确保`validate`方法是同步执行的,例如,可以检查是否提供了`async`标志并强制同步处理(`this.$refs.updateForm.validateSync()`)。 - **验证前置操作**:在调用`validate`之前明确设置表单状态为待验证(`this.$refs.updateForm.resetFields()`),然后再触发验证。 - **取消事件监听**:在请求完成后移除验证的事件监听,避免多次触发。 ```javascript handleRotePlan() { this.$refs.updateForm.resetFields(); // 清空已有的校验结果 this.$refs.updateForm.validate((valid) => { if (valid) { this.request(form); this.$nextTick(() => { // 确保请求完成后再移除监听 this.$refs.updateForm.validateField('yourField', { force: true }); // 验证某个字段并强制执行 this.$refs.updateForm.stopValidation(); // 停止后续的自动验证 }); } }); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值