在下面的代码中,验证用户名有一个值并且密码匹配,即使正在执行/强制执行验证规则,也不会触发onSuccess或onFailure回调。我已经独立地测试了所有其他部分,这个布局完全遵循文档,所以我排除了语法错误。除了下面使用的语法之外,我还尝试了$().form().onSuccess().onFailure()的格式,但是得到了一个"Uncaught : onSuccess不是函数“的格式。这里的小提琴:语义UI onSuccess,onFailure回调示例。
$(function(){
$('#main')
.form({
on: 'blur',
fields: {
username: {
identifier : 'username',
rules: [
{
type : 'empty'
}
]
},
password1: {
identifier : 'password1',
rules: [
{
type : 'match[password2]',
prompt : 'Please enter the same value in both fields'
}
]
},
password2: {
identifier : 'password2',
rules: [
{
type : 'match[password1]',
prompt : 'Please enter the same value in both fields'
}
]
}
},
onSuccess: function() {
$(".ui.button[name='account']").removeClass('disabled');
console.log('Success');
},
onFailure: function() {
$(".ui.button[name='account']").addClass('disabled');
console.log('Failure');
}
}
);
});发布于 2016-03-08 10:58:41
关键是这样称呼它。$('#main').form(fieldRules, settings); onFailure和onSuccess在设置中注册。
查看修改后的代码:
$(function(){
$('#main')
.form({
username: {
identifier : 'username',
rules: [
{
type : 'empty'
}
]
},
password1: {
identifier : 'password1',
rules: [
{
type: 'empty',
prompt: 'Please enter the password'
},
{
type : 'match[password2]',
prompt : 'Please enter the same value in both fields'
}
]
},
password2: {
identifier : 'password2',
rules: [
{
type : 'match[password1]',
prompt : 'Please enter the same value in both fields'
}
]
}
}, {
on: 'blur',
inline: true,
onSuccess: function() {
alert('Success');
return false; // false is required if you do don't want to let it submit
},
onFailure: function() {
alert('Failure');
return false; // false is required if you do don't want to let it submit
}
});
});发布于 2017-08-07 17:06:22
我也遇到了这个问题。我什么都试过了,唯一能让onSuccess开火的方法就是这么做:
const formValidated = $('.ui.form').form(
{
fields: {
name: {
identifier: 'name',
rules: [
{
type : 'empty',
prompt : 'Please enter a name for the camera'
}
]
},
}
}
)
if ($(formValidated).form('is valid')) {
this.handleSave();
} else {
return false;
}发布于 2022-07-04 03:40:26
在经历了几个小时的这个问题之后,我发现这个问题适合我(语义ui @2.4.1,jquery @3.1.1):
$(document).ready(function () {
$('#message-center form').form({
fields: {
email: {
identifier: 'email',
rules: [
{
type: 'empty',
prompt: 'Please enter your email.',
},
{
type: 'email',
prompt: 'Please enter a valid email.',
},
],
},
},
onSuccess: function (event) {
event.preventDefault();
sendMessage(event);
return false;
},
});
});注意到onSuccess与fields位于相同的options对象上。
https://stackoverflow.com/questions/35296463
复制相似问题