如何在用户完成输入或使用jQuery离开文本字段时从文本字段获取值?

时间:2013-12-27 18:19:22

标签: javascript jquery ajax forms

我有一个像;

的表格
<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。我怎么能这样做?

3 个答案:

答案 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()并更新是否有任何不同于上次检查。