我是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');
}
}
答案 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/。我已经重写了一些代码:
if
条件,deferred
隐藏验证的异步方面(链接到AJAX)希望有所帮助:)