javascript - 按键事件不适用于最后插入的字符

标签 javascript jquery

我写了这段代码:

$(".SermeCoopConvertirMayuscula").keypress(function (e) {
    $(this).val($(this).val().toUpperCase());
    regexp = /^[A-Z0-9 ]*$/;
    return regexp.test($(this).val());
});

它工作正常。但是,当我输入内容时,它不会更新我最后插入的字符。我怎样才能添加最后一个字符?

我需要使用 keypress 事件,我不能使用 keyup 事件。

最佳答案

是的,因为当函数被调用时,字段不会更新为值

事件在这一步被调用

  1. 按键
  2. 按键
  3. 更新 View
  4. 按键
  5. 更新 View
  6. 按键

因此,如果您可以将此事件更改为 keyup然后你会得到最新的值

或者,如果您仍想使用可以做一件事的按键事件,您可以使用以下代码

$(".SermeCoopConvertirMayuscula").keypress(function (eventObject) {
    var val = $(this).val() + eventObject.key;
    val =val.toUpperCase()
    var regexp1 = /^[A-Z0-9 ]*$/;
    var regexp2 = /^[A-Za-z0-9 ]$/;
    if(regexp1.test(val) && regexp2.test(eventObject.key)) {
      $(this).val(val);
    }

    return false;
});

关于javascript - 按键事件不适用于最后插入的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668236/

相关文章:

javascript - 在 Typescript 中输入 Immutable.js Map

javascript - 基础编程——对象数组到多维对象

Javascript 函数和 this

javascript - SudoSlider(javascript)。不同浏览器的不同看法

javascript - 在 javascript 中缓冲视频后处理视频

javascript - jQuery datepicker 发布错误的日期值

javascript - JQuery .on 'change' 事件不会因部分 View 内的下拉菜单而被触发

javascript - 向 iframe 添加新 header

javascript - MVC - 通过ajax将js变量传递给 Controller ​​,然后在 View 中使用它

javascript - 在 iFrame 的父窗口中打开一个 div