是否可以在jQuery插件中维护可链接性并返回true或false
我编写了一个用于验证表单的jQuery初学者插件 如果此jQuery插件留空或无法通过我的正则表达式测试,则它将在validating元素下显示一个错误 现在,如果表单有错误,我想从我的插件返回true或false来禁用submit按钮 问题是:我能做到这一点,并保持我的插件的链接能力吗 我有这样的想法:是否可以在jQuery插件中维护可链接性并返回true或false,jquery,jquery-plugins,chainability,Jquery,Jquery Plugins,Chainability,我编写了一个用于验证表单的jQuery初学者插件 如果此jQuery插件留空或无法通过我的正则表达式测试,则它将在validating元素下显示一个错误 现在,如果表单有错误,我想从我的插件返回true或false来禁用submit按钮 问题是:我能做到这一点,并保持我的插件的链接能力吗 我有这样的想法: $("input[type='text']").change(this.mytextboxvalidator( {'regex':'something','message':'somethin
$("input[type='text']").change(this.mytextboxvalidator(
{'regex':'something','message':'somethingelse'}));
jQuery( ".someSelector" ).myPluginName();
编辑:
你可以这样做,但有点争议:
不,你不能。您应该做的是编写插件,使其绑定到选择器的更改事件
在插件中,执行以下操作以绑定到更改事件:
...
$(this).bind('change', function () {
//validation logic
});
...
return this;
您可以这样使用插件:
$("input[text='text']").mytextvalidator({'regex':'something','message':'somethingelse'});
编辑:
你可以这样做,但有点争议:
不,你不能。您应该做的是编写插件,使其绑定到选择器的更改事件
在插件中,执行以下操作以绑定到更改事件:
...
$(this).bind('change', function () {
//validation logic
});
...
return this;
您可以这样使用插件:
$("input[text='text']").mytextvalidator({'regex':'something','message':'somethingelse'});
维护链接能力时,将返回一个jQuery对象。它是一个对象,因此只需在存储布尔值的对象中添加一个属性:
(function( $ ){
$.fn.someMethod = function( ) {
var bln=true;
return (this.each(function() {
//modify boolean when needed
bln=false;
}).extend({myBoolean:bln}));
};
})( jQuery );
用法:
if(!$('someselector').someMethod().myBoolean)
{
//disable the button
}
维护链接能力时,将返回一个jQuery对象。它是一个对象,因此只需在存储布尔值的对象中添加一个属性:
(function( $ ){
$.fn.someMethod = function( ) {
var bln=true;
return (this.each(function() {
//modify boolean when needed
bln=false;
}).extend({myBoolean:bln}));
};
})( jQuery );
用法:
if(!$('someselector').someMethod().myBoolean)
{
//disable the button
}
我看到这里有很多误解 首先,您没有编写jQuery插件。jQuery插件的使用方式如下:
$("input[type='text']").change(this.mytextboxvalidator(
{'regex':'something','message':'somethingelse'}));
jQuery( ".someSelector" ).myPluginName();
您,您正在使用传递到jQuery函数$.fn.change中的方法mytextboxvalidator
第二,正如SARKY672所说的,你真的应该考虑使用已经存在的jQuery用于表单验证,那里有很多,只有谷歌。 第三,因为我是一个好人,我会尽力帮助你的插件
// myFormValidationPlugin is the name of your plugin, change it as you want
$.fn.myFormValidationPlugin = function( options ) {
// bind the event inside the plugin
this.change(function( ev ) {
// doing some BASIC verification
if( options.pattern.test( $(this).val() ) {
// input is valid
// in your example, I guess it's here you want to return TRUE
}
else {
// input is invalid
// in your example, I guess it's here you want to return FALSE
}
});
// NEVER break the chain
// so yes, you can maintain chainability
return this;
};
// usage
$( ".someSelector" ).myFormValidationPlugin({
pattern: /foo/
});
我希望这会有所帮助。但是,此代码不会像您一样工作,除非。要使其发挥作用,您应该:
将事件绑定到表单的提交事件
在处理程序中,检查每个元素是否具有有效值
如果所有元素都有效,则执行提交
如果一个或多个无效,请禁用事件,例如使用event.preventDefault调用
我看到这里有很多误解 首先,您没有编写jQuery插件。jQuery插件的使用方式如下:
$("input[type='text']").change(this.mytextboxvalidator(
{'regex':'something','message':'somethingelse'}));
jQuery( ".someSelector" ).myPluginName();
您,您正在使用传递到jQuery函数$.fn.change中的方法mytextboxvalidator
第二,正如SARKY672所说的,你真的应该考虑使用已经存在的jQuery用于表单验证,那里有很多,只有谷歌。 第三,因为我是一个好人,我会尽力帮助你的插件
// myFormValidationPlugin is the name of your plugin, change it as you want
$.fn.myFormValidationPlugin = function( options ) {
// bind the event inside the plugin
this.change(function( ev ) {
// doing some BASIC verification
if( options.pattern.test( $(this).val() ) {
// input is valid
// in your example, I guess it's here you want to return TRUE
}
else {
// input is invalid
// in your example, I guess it's here you want to return FALSE
}
});
// NEVER break the chain
// so yes, you can maintain chainability
return this;
};
// usage
$( ".someSelector" ).myFormValidationPlugin({
pattern: /foo/
});
我希望这会有所帮助。但是,此代码不会像您一样工作,除非。要使其发挥作用,您应该:
将事件绑定到表单的提交事件
在处理程序中,检查每个元素是否具有有效值
如果所有元素都有效,则执行提交
如果一个或多个无效,请禁用事件,例如使用event.preventDefault调用
你没有像现在这样链接你的插件方法,没有一个演示,任何答案都是完全的猜测写一个全新的jQuery验证插件就像在牛排馆旁边打开一个汉堡包摊。为什么?@Sparky672嗨,在我的情况下,我应该显示我在表格中的具体错误。是否有任何验证插件,提供正则表达式,并可以显示特定的消息在特定的格式?谢谢。jQuery验证插件提供了所有这些。它的errorPlacement选项有助于将错误放置在任何位置,包括div。你可以使用addMethod来使用任何你想要的正则表达式。你没有像现在这样链接你的插件方法,没有演示,任何答案都是完全的猜测编写一个全新的jQuery验证插件就像在牛排馆旁边打开一个汉堡包摊。为什么?@Sparky672嗨,在我的情况下,我应该显示我在表格中的具体错误。是否有任何验证插件,提供正则表达式,并可以显示特定的消息在特定的格式?谢谢。jQuery验证插件提供了所有这些。它的errorPlacement选项有助于将错误放置在任何位置,包括div。你可以使用addMethod来使用任何你想要的正则表达式。我认为这样做不是一个好主意。jQuery方法应该始终返回jQuery Javascript对象,除非在某些罕见的情况下。像这样返回一个mixin对象是令人困惑的,并且是jQuery的错误用法。默认情况下,jQuery对象是一个非常混合的对象。@Dr.Molle,很好的提示,谢谢,alotI不认为这样做是一个好主意。jQuery方法应该始终返回jQuery Javascript对象,除非在某些罕见的情况下。像这样返回一个mixin对象是令人困惑的,这是对jQuery的错误使用。默认情况下,jQuery对象是一个非常混合的对象。@Dr.Molle,很好的提示,非常感谢