【问题标题】:How to get value from a text field when user finish typing or goes out of textfield using jQuery?当用户完成输入或使用 jQuery 离开文本字段时,如何从文本字段中获取值?
【发布时间】:2013-12-27 18:19:22
【问题描述】:

我有一个类似的表格;

<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() function + 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。我该怎么做?

【问题讨论】:

  • 使用.focus()api.jquery.com/focus
  • $('input').blur(function() { });
  • change 事件就是这样做的。

标签: javascript jquery ajax forms


【解决方案1】:

你可以像这样使用更改事件

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());
});

【讨论】:

  • 按回车键也会触发“更改”,但 IE 除外
  • 不,它没有。刚刚用firefox和chrome检查过。 enter 仅在输入值发生实际变化时触发 change 事件。
  • 这就是我的意思,对不起,在 IE 中更改值并按回车后它不会触发
【解决方案2】:

我猜.focusout()是你想要的那个

当某个元素或其中的任何元素失去焦点时,会将 focusout 事件发送到该元素。

你可以使用.blur()但是模糊事件,它支持检测对后代元素的焦点丢失

【讨论】:

    【解决方案3】:

    Focus、blur 和 change 都是可行的事件侦听器,目的是在用户在输入之外单击时更新 span,但我认为这不足以在他们“完成输入”时更新它,尤其是如果他们使用了自动完成或 Ctrl+V,这可能不构成按键或按键事件。

    也许可以尝试设置一些限制方法,以便每 100 毫秒左右 jQuery 将在那个时刻检查表单的 val() 并更新如果与上次检查有任何不同。

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 2012-07-18
      相关资源
      最近更新 更多