在输入值中插入按键

Insert keypress in input value

您好,我在输入中插入值有问题

你可能会问为什么我把按键输入框用JS? 我有编译程序 emscripten,它有驱动程序输入,可以拦截页面上其他元素的所有按键、按键、按键和 returns false。 这会阻止页面上的所有输入字段。 我无法在 emscripten 程序中修复此问题,因此我决定在 html 端通过 jQuery 修复它

   jQuery(function() {
        var $input = jQuery("#search-area228");
        $input
            .attr("tabindex", "0")
            .mousedown(function(e){ jQuery(this).focus(); return false; })
             .keypress(function(e){
     var data = jQuery(this).val
    var text = String.fromCharCode(e.keyCode || e.charCode)
    for(var i = 0; i < text.length; i++)
    jQuery(this).val(text[i])
    return false; });
   
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="search-area228">
这将解锁输入字段,但问题是只允许您输入一个字符,当您单击以下内容时将替换它! 请帮忙!

只需将新文本添加到您已经(以错误的方式)定义为 data 而未使用的字段中的现有文本中

当您调用输入的方法 val 时,您应该使用大括号 jQuery(this).val() 而不是 jQuery(this).val 因为这是 jQuery 的函数方法而不是变量.

jQuery(function() {
        var $input = jQuery("#search-area228");
        $input
            .attr("tabindex", "0")
            .mousedown(function(e){ jQuery(this).focus(); return false; })
             .keypress(function(e){
     var data = jQuery(this).val();
    var text = String.fromCharCode(e.keyCode || e.charCode)
    for(var i = 0; i < text.length; i++)
    jQuery(this).val(data + text[i])//<<< here
    return false; });
   
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="search-area228">

您的代码几乎没有错误。

您将输入的值设置为当前键,而不是将其附加到输入的当前值。

jQuery(this).val(jQuery(this).val() + text[i]);

这是固定版本:

jQuery(function () {
    var $input = jQuery("#search-area228");
    $input.attr("tabindex", "0")
        .mousedown(function (e) {
        jQuery(this).focus();
        return false;
    })
        .keypress(function (e) {
        var data = jQuery(this).val
        var text = String.fromCharCode(e.keyCode || e.charCode)
        for (var i = 0; i < text.length; i++)
        jQuery(this).val(jQuery(this).val() + text[i]);
        return false;
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="search-area228">