我有一个像;
的表格<form method="post" action="test.php">
<input type="text" name="field1" class="class1"><span class="info">
<input type="text" name="field2" class="class1"><span class="info">
<input type="text" name="field3" class="class1"><span class="info">
</form>
我希望在用户完成输入或光标超出表单字段时更新相应的信息范围。 keypress()
函数+ setTimeout
+ clearTimeout
在输入时会起作用,但在Ctrl + V或其他方法中keypress
不相关时会失败。输入数据传递给ajax请求,如;
$.ajax({
type: 'POST',
url: 'ajaxhandler.php',
data: 'item='+fieldvalue,//class1 values. field1 value, field2 value etc
cache: false,
success: function(result) {
if(result == "true"){
//update span with true
}else{
//update span with false
}
}
});
我正在努力实现这一目标。在用户向表单字段提供输入后,它可以传递给ajax,并且可以使用ajax回复更新相应的信息范围,无论是true还是false。我怎么能这样做?
答案 0 :(得分:3)
您可以像这样使用更改事件
http://jsfiddle.net/kasperfish/Zxn3Q/1/
$('input[type=text]').on('change', function(){
var input=$(this);
//do your ajax call here
alert('this can be an ajax call');
input.next('span.info').html(input.val());
});
答案 1 :(得分:0)
我猜.focusout()
就是你想要的那个
当焦点事件或其中的任何元素失去焦点时,会将焦点事件发送到元素。
你可以使用.blur()
但是模糊事件,它支持检测失去对后代元素的关注
答案 2 :(得分:0)
专注,模糊,和更改是所有可行的事件侦听器,用于在用户单击输入外部时更新跨度,但我不认为这足以在“完成键入”时更新它,特别是如果他们使用自动完成或Ctrl + V,可能不构成按键或键盘事件。
也许尝试设置一些限制方法,所以每100ms左右jQuery将检查当时表单的val()并更新是否有任何不同于上次检查。