Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery将内容从一个文本字段复制到另一个文本字段_Jquery_Html_Forms_Copy - Fatal编程技术网

使用jQuery将内容从一个文本字段复制到另一个文本字段

使用jQuery将内容从一个文本字段复制到另一个文本字段,jquery,html,forms,copy,Jquery,Html,Forms,Copy,试图将一些用户输入从一个HTMLinput复制到另一个HTML,我的控制台显示错误:uncaughttypeerror:Object#没有方法“val” 不确定问题出在哪里。。我认为文本输入确实有一个值?谢谢你的帮助 HTML: $('.answer').bind('keypress',function(){ var name=$(this.attr('id'), feild=$('#'+name+'f')[0]; feild.val($(this.val()); }); 编辑:正如@zerk

试图将一些用户输入从一个HTML
input
复制到另一个HTML,我的控制台显示错误:
uncaughttypeerror:Object#没有方法“val”

不确定问题出在哪里。。我认为文本输入确实有一个值?谢谢你的帮助

HTML:


$('.answer').bind('keypress',function(){
var name=$(this.attr('id'),
feild=$('#'+name+'f')[0];
feild.val($(this.val());
});

编辑:正如@zerkms所指出的,[0]在任何情况下都是不需要的,但由于有时将数组索引与选择器一起使用是有用的,因此我将把它留在这里,以便您理解错误

更改:

field.val($(this).val());


说明:
$('#'+name+'f')
获取与选择器匹配的HTML元素数组。由于您将
[0]
放入数组,因此将获取数组中的第一个HTML元素。由于
field
是一个HTML元素,而不是jQuery对象,因此需要使用
$(field)
将其转换为jQuery对象,以便在其上使用jQuery方法。

编辑:正如@zerkms指出的那样,[0]无论如何都不需要,但由于有时使用带有选择器的数组索引很有用,我把这个留在这里,这样你就能明白错误了

更改:

field.val($(this).val());


说明:
$('#'+name+'f')
获取与选择器匹配的HTML元素数组。由于您将
[0]
放入数组,因此将获取数组中的第一个HTML元素。由于
field
是一个HTML元素,而不是jQuery对象,因此需要使用
$(field)
将其转换为jQuery对象,以便在其上使用jQuery方法。

第一件事——需要添加两个额外的点来真正完成此处的解决方案:

  • onkeypress事件只应在字符键按下和释放(或反复保持)时触发

  • 对于按下/释放的任何键,应触发onkeydown/onkeyup事件

因此,您确实应该在keyup上复制输入文本,因为您希望包括删除操作、粘贴事件等。。即使使用@zerkms/@waitinformatrain修复程序,您也只能将信息添加到第二个框中

第二件事——这种方法是可行的,但它没有我在实际网站上看到的那种快速性,我想看看我是否能做到这一点,就这样吧

Onkeyup/down事件没有字符信息(或者不应该),因此您无法真正使用它们来帮助加快进程

我对它做了一段时间的修改,虽然它确实增加了依赖性,但我提出的方法的响应速度要快得多

我不认为有任何重大缺陷,但YMMV。同样,对于keypress事件来说,它的补丁非常可笑,但希望jQuery能够为您处理这些问题(我只在Chrome中测试过)

希望这有帮助!

第一件事——要真正完成此解决方案,需要添加两个额外的要点:

  • onkeypress事件只应在字符键按下和释放(或反复保持)时触发

  • 对于按下/释放的任何键,应触发onkeydown/onkeyup事件

因此,您确实应该在keyup上复制输入文本,因为您希望包括删除操作、粘贴事件等。。即使使用@zerkms/@waitinformatrain修复程序,您也只能将信息添加到第二个框中

第二件事——这种方法是可行的,但它没有我在实际网站上看到的那种快速性,我想看看我是否能做到这一点,就这样吧

Onkeyup/down事件没有字符信息(或者不应该),因此您无法真正使用它们来帮助加快进程

我对它做了一段时间的修改,虽然它确实增加了依赖性,但我提出的方法的响应速度要快得多

我不认为有任何重大缺陷,但YMMV。同样,对于keypress事件来说,它的补丁非常可笑,但希望jQuery能够为您处理这些问题(我只在Chrome中测试过)

希望这有帮助!

只要删除
[0]
我就是个白痴。你们应该回答,这样我就可以接受它接受waitinforatrain的一个:-)也将feild改为field。o_Ojust remove
[0]
我是个白痴。你们应该回答,这样我就可以接受它接受waitinforatrain的一个:-)也将feild改为field。o_O1。获取jquery对象2。从jquery对象3获取DOM对象。将DOM对象转换回jquery对象。没有任何意义。获取jquery对象2。从jquery对象3获取DOM对象。将DOM对象转换回jquery对象。没有任何意义
$(field).val($(this).val());
$('.answer').bind('keyup', function(e){
    $('#' + $(this).attr('id') + 'f').val($(this).val());
});

$('.answer').keypress(function(e){
    var newChar = String.fromCharCode(event.which);
    var oldVal = $(this).val();
    var cursorPos = $(this).caret().start;

    var newVal = oldVal.slice(0, cursorPos) + newChar + oldVal.slice(cursorPos);

    $('#' + $(this).attr('id') + 'f').val(newVal);
});