在下面的jquery中,应该在“dot”之前有一个关闭的paretheses“)”:
“.test($
......”?
(/^\s*$/.test($(this).val()))
$(document).ready(function () {
$('#userlogin').css('color', '#cccccc').val('LOGINNAME');
$('#userlogin').blur(function () {
if (/^\s*$/.test($(this).val())) {
$(this).val('LOGINNAME');
$(this).css('color', '#cccccc');
$(this).valid();
}
}).focus(function () {
if ($(this).val() === 'LOGINNAME') {
$(this).val('');
$(this).css('color', '#000000');
}
});
如果没有,为什么不呢?那段代码对我来说有点奇怪。
答案 0 :(得分:4)
代码是正确的:
/^\s*$/ // create a regex
.test( // call the test method on it
$(this) // create a jquery object
.val() // call the val method on it
)
但是,可以缓存该值:var val = $(this).val();
。
然后,这一行可能不会让您感到困惑:/yourregex/.test(val)
答案 1 :(得分:2)
/^\s*$/
是一个正则表达式文字,它有一个被调用的测试方法。括号来自if条件,它更大。
由于javascript完全面向对象,即使文字也可以有方法。
答案 2 :(得分:2)
/^\s*$/.test( $(this).val() )
第一部分是正则表达式 - 不是字符串或其他任何东西。因此,它以分隔符/
和/
开始和结束。
使用.match
有时更清晰,因为它似乎没有在源中浮动一些奇怪的未绑定项目:
$(this).val().match(/^\s*$/);
这个特殊的表达方式,如下所示:
/^ // Beginning of String
\s* // Space, zero or more times
$/ // End of String
因此,如果从开始到结束都有零个或多个空格,那么它将测试为正数。
答案 3 :(得分:2)
代码很好。如果你认为它不可读,为什么不先创建正则表达式
var regex = /^\s*$/;
if(regex.test($(this).val())
...