语义 UI onSuccess、onFailure 回调未在表单验证时触发
Semantic UI onSuccess, onFailure callbacks not being fired upon form validation
在以下验证用户名是否具有值以及密码是否匹配的代码中,即使验证规则是 executed/enforced,onSuccess 和 onFailure 回调都不会被触发。我已经独立测试了它的每个其他部分并且这个布局完全遵循文档,所以我已经排除了语法错误。除了下面使用的语法外,我还尝试了 $().form().onSuccess().onFailure() 的格式,但得到了 "Uncaught TypeError: onSuccess is not a function"。 Fiddle 这里:Semantic UI onSuccess, onFailure callback example.
$(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');
}
}
);
});
关键是这样调用。 $('#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
}
});
});
我也运行关注这个问题。我什么都试过了,唯一能让我 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;
}
在以下验证用户名是否具有值以及密码是否匹配的代码中,即使验证规则是 executed/enforced,onSuccess 和 onFailure 回调都不会被触发。我已经独立测试了它的每个其他部分并且这个布局完全遵循文档,所以我已经排除了语法错误。除了下面使用的语法外,我还尝试了 $().form().onSuccess().onFailure() 的格式,但得到了 "Uncaught TypeError: onSuccess is not a function"。 Fiddle 这里:Semantic UI onSuccess, onFailure callback example.
$(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');
}
}
);
});
关键是这样调用。 $('#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
}
});
});
我也运行关注这个问题。我什么都试过了,唯一能让我 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;
}