【问题标题】:JQuery Blur Validation ProblemJQuery 模糊验证问题
【发布时间】:2010-06-04 03:02:37
【问题描述】:

如果文本字段为空,我想使用模糊验证一个简单的表单。

下面的代码应该可以工作,但是即使我弹出一些文本也会一直提醒我,请问我做错了什么?

var name = $("input#name").val();
$("input#name").blur(function() 
{
      if (('input#name:empty'))
      {
            // Testing
            alert('Empty');
      }
});

【问题讨论】:

    标签: jquery validation forms blur


    【解决方案1】:

    你想使用$(this).val(),像这样:

    $("input#name").blur(function() {
       if ($(this).val().length === 0) {
         // Testing
         alert('Empty');
       }
    });
    

    目前您正在检查if('input#name:empty'),这是真的,任何字符串在JavaScript(弱类型)中都将是true:empty selector 也检查它没有 子元素,而不是它的 是空的,所以检查该值是一个空字符串,或者 .length 是像我上面一样空:)

    此外,除非此 ID 可能位于您不想匹配的其他元素类型上,否则 #name 就足够了,而且速度更快,input 前缀是多余的。

    【讨论】:

    • 完美,谢谢尼克。如果您有时间,请您解释一下: if ($(this).val().length === 0) { 再次感谢!
    • @Keith - 当然,this 指的是任何事件处理程序中的输入 DOM 元素,例如我们传递给 .blur() 的函数,将其包装在 $() 中得到 jQuery 包装版本它,它可以让你使用.val() 来获得它的价值。然后我们检查该字符串的长度是否大于 0,这意味着它有一些字符。
    【解决方案2】:

    试试这个:

    $("input#name").blur(function() 
    {
      var name = $(this).val();
      if (name.length == 0)
      {
            // Testing
            alert('Empty');
      }
    });
    

    编辑:尼克指出,当模糊发生时需要检查输入文本。如果我再做一些改变,就像他的回答一样,所以我就到此为止了。

    【讨论】:

    • 这种方法行不通...您在页面加载时获取的值,而不是在元素的blur 事件触发时获取的值,您需要获取当时的值.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多