【问题标题】:Insert keypress in input value在输入值中插入按键
【发布时间】:2015-07-04 23:55:00
【问题描述】:

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

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

   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">
这将解锁输入字段,但问题是只允许您写入一个字符,并且当您单击以下内容时会替换它! 请帮忙 !

【问题讨论】:

    标签: javascript jquery html input keypress


    【解决方案1】:

    只需将新文本添加到您已经定义(以错误方式)为 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">

    【讨论】:

    • 非常感谢!解决方案非常简单。但是顺便说一句,该事件仅适用于 keydown 和 keyup。但是有一个问题,退格不起作用。任何想法如何实现它?
    【解决方案2】:

    您的代码几乎没有错误。

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

    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">

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2019-05-24
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2014-05-06
      相关资源
      最近更新 更多