【问题标题】:How to use Replace jQuery function on change/keyup/input into Javascript function如何在更改/键入/输入到 Javascript 函数时使用替换 jQuery 函数
【发布时间】:2021-10-08 23:21:18
【问题描述】:

我正在使用 jQuery,当数值输入到输入框中时,例如1234 它将它们分别转换为 ABCD。但我想将此 jQuery 函数转换为纯 Javascript。请看一下我的 jQuery 代码,它工作得非常好,并建议我如何将它转换成 Javascript(我也很困惑,为什么它总是让我在最后输入的字母,如果我在中间输入?)。

$(document).ready(function(){
  $('input[name="xrd-reference"]').bind("change keyup input",function() {
    $('input[name="xrd-reference"]').val($('input[name="xrd-reference"]').val().replace(/1/g, 'A').replace(/2/g, 'B').replace(/3/g, 'C').replace(/4/g, 'D').replace(/5/g, 'E').replace(/6/g, 'F').replace(/7/g, 'G').replace(/8/g, 'H').replace(/9/g, 'I').replace(/0/g, 'O')); 
  });
});
<input name='xrd-reference'>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

【问题讨论】:

  • 那么你有什么尝试吗?
  • 为什么?因为你替换了值,浏览器将焦点设置到末尾。

标签: javascript jquery


【解决方案1】:

会是这样的

<input name="xrd-reference">

<script>
    const substitutions = {
        1: 'A',
        2: 'B',
        3: 'C',
        4: 'D',
        5: 'E',
        6: 'F',
        7: 'G',
        8: 'H',
        9: 'I',
        0: 'O'
    };
    window.onload = () => {
        const input = document.querySelector('[name=xrd-reference]');
        input && input.addEventListener('input', e => {
        input.value = input.value.replace(/[0-9]/g, (char) => substitutions[char] || char);
        });
    }

    
</script>

【讨论】:

  • 非常感谢您的回答先生,它确实帮助我更深入地理解 Javascript。你能告诉我为什么当我在某个中间输入时光标总是在最后,以及如何将它保持在我输入的位置?
  • 我在互联网上进行了搜索,发现我们可以将光标位置存储在变量中,然后再次设置光标位置。但它不起作用,我不知道为什么? let position = document.querySelector('[name=xrd-reference]').getCursorPosition(); document.querySelector('[name=xrd-reference]').setCursorPosition() = position;
  • 老实说,我不知道,这可能对你有帮助stackoverflow.com/questions/512528/…
  • 我正在关注这个帖子,stackoverflow.com/questions/8219639/… 但无法正确理解。
猜你喜欢
  • 2011-06-20
  • 2010-11-03
  • 2012-12-10
  • 2016-04-13
  • 2013-03-09
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多