jQuery通过函数调用检查输入是否有值
jQuery checking if input has value by function call
我定义了这个函数来检查输入字段是否为空
function hasValue() {
if ( !!$.trim( $(this).val() ) )
return true;
}
过滤jQuery Collection
$('#form').find( '.email' ).filter( hasValue );
但是我还想重用hasValue()
-函数来切换类。
$('.input').change( function () {
var empty = hasValue().apply( $(this) ); //throws an error
// var empty = $(this).hasValue(); //doesn't work either
$('#box').find('.required-tmp').toggleClass('required', empty );
});
把这个传递给apply。并且不要在
之前执行()hasValue.apply(this);
如果你想更好地使用你的函数,它必须接受一个元素作为参数,这不是一个很好的模式使用this
像这样。首选在参数
function hasValue(elem) {
return !!$.trim($(elem).val());
}
map的用法也一样:
$('#form').find( '.email' ).filter( hasValue );
And:
$('.input').change( function () {
var empty = hasValue(elem); //throws an error
$('#box').find('.required-tmp').toggleClass('required', empty );
});
$('.input').change( function () {
var empty = hasValue.apply( $(this) ); //apply function should be used this way .
// var empty = $(this).hasValue(); //doesn't work either
$('#box').find('.required-tmp').toggleClass('required', empty );
});
为什么在hasValue方法中使用双否定?
其次,使用apply as:var empty = hasValue.apply( this );
这将传递元素作为参数,你可以在那里使用!
第三,要检查值是否存在,您可以使用类型检查而不是trim,如:
if(typeof $(this).val !== 'undefined'){
return true;
}
看看这是否适合你!
apply语法应该类似于hasValue。apply($(this))代替hasValue()。Apply ($(this))
也许这会解决你的问题。
谢谢,问候,查理
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以为HTML5输入滑块触发oninput事件
- 使用onkeyup JS事件检查输入的值是否唯一
- 是否可以从输入处理程序中确定输入的类型
- angularJs检查是否输入
- Angularjs-检查我是否输入并切换加载程序图标
- javascript 警报以确认值是否输入了两次
- 检查是否输入了文本.找不到错误
- 提交前验证表单(检查是否输入了所有字段)
- 在JSF+PrimeFaces中重置表单之前,请检查是否输入了一些强制输入字段
- 检查是否输入了正确的电子邮件
- 检测以前是否输入过
- 如何检查数字输入字段中是否输入了字母字符或符号
- 搜索小部件-如何确定是否“输入”已按下或已选择结果
- 如何知道用户是否输入了已注册的有效电子邮件地址
- ASP.Net MVC Razor引擎:让javascript函数知道用户是否输入了无效数据
- jQuery如何判断用户是否输入'& # 39;在文本输入区
- 如何检测是否输入了两个输入元素,如文本字段.(php / javascript)
- 如何知道用户是否输入了无效的$routeparams
- Select2 -告诉用户是否输入了新的搜索选项