jquery初学者 - 按时间启动的功能

时间:2012-05-14 12:09:23

标签: javascript jquery validation function

我是JS的新手,在理解JQUERY语义时遇到了问题。

我有一个用于检查单元格内容的函数。

问题:当单元格失去焦点时,函数才会启动,如果单击“提交”,则先显示错误,然后运行该函数。

我希望函数在我进入单元格时运行。怎么做?

由此发起:

$(".user_id").blur(function(){ validateUserId($('.user_id')); });

功能:

function validateUserId(reference) {
    if ( 5 == $(reference).val().length ) {
        $.get('index.php?user=' + $(reference).val(), function(data) {
            if ( "error" == data ) {
                $(reference).parent().parent().addClass('error');
                alert('error');
            } else {
                $(reference).parent().parent().removeClass('error');
                $(reference).addClass('valid');
                $(reference).parent().parent().addClass('success');
            }
        });
    } else {
        alert('short');
        $(reference).parent().parent().addClass('error');
    }
}

5 个答案:

答案 0 :(得分:4)

$(".user_id").on('keyup', function(){
   validateUserId($(this)); 
});

答案 1 :(得分:1)

我会使用keyup事件。 因此,每当有人在输入单元格中键入一个键时,该函数将被执行。

 $(".user_id").on("keyup", function(){ validateUserId($(this)); });

我将$(“。user_id”)更改为$(this)。由于您需要字段的值,因此您执行了keyup事件。 (而不是其他字段,如果有2个字段具有相同的.user_id类。)

答案 2 :(得分:0)

尝试在焦点事件上绑定函数

答案 3 :(得分:0)

$("input[submit]").click(function(e){
    e.preventDefault();
    var valid = validateUserId($('.user_id')); // maybe the function could return a boolean value too instead of just adding classes to the HTML part
    if (valid) {
        $("#your_form_id").submit(); // only if the input is valid, submit it
    }
});

关于您的问题的旁注:如果您单击提交按钮,它将首先触发提交操作,这可能会给您一个错误,然后执行blur()代码块

答案 4 :(得分:0)

这是一个有效的演示http://jsfiddle.net/pomeh/GwswM/。我已经重写了一些代码:

  • 将DOM选择缓存到变量中,
  • 使用jQuery方法链接,
  • 用tripe等号改善if条件,
  • 分离的AJAX调用和应用程序逻辑,
  • 缓存相同的AJAX调用,
  • 使用jQuery deferred隐藏验证的异步方面(链接到AJAX)

希望有所帮助:)