在输入值中插入按键

时间:2015-07-04 23:55:01

标签: javascript jquery html input keypress

我输入

中的插入值有问题

你可能会问我为什么把keypress输入字段用JS? 我有编译的程序emscripten,它有驱动程序输入拦截所有keypress,keydown,keyup并返回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">
这将解锁输入字段,但问题是只允许您编写一个字符,当您点击以下内容时会替换它! 请帮忙!

2 个答案:

答案 0 :(得分:0)

只需将新文本添加到您已定义(以错误方式)为data并且未使用该字段的字段中的预先存在的文字

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

&#13;
&#13;
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; });
		 
	});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="search-area228">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您的代码没有什么错误。

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

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