Javascript jQuery将一个输入事件模拟为另一个输入事件

Javascript jQuery将一个输入事件模拟为另一个输入事件,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我有两个文本输入id:input1和input2。我想模拟输入1到输入2上的按键。我无法在模糊上复制值,因为在模拟之后,我将更改input1的值。您能告诉我如何在jQuery1.6或Javascript中实现这一点吗?我在下面进行了尝试,但这不起作用,并且更改了值,即$(“#”+origid).val()返回空白 $(".maskedinput").keyup(function (e) { var value = $.trim($(this).val()); va

我有两个文本输入id:input1和input2。我想模拟输入1到输入2上的按键。我无法在模糊上复制值,因为在模拟之后,我将更改input1的值。您能告诉我如何在jQuery1.6或Javascript中实现这一点吗?我在下面进行了尝试,但这不起作用,并且更改了值,即$(“#”+origid).val()返回空白

$(".maskedinput").keyup(function (e) {
        var value = $.trim($(this).val());
        var origid = $(this).attr('origid');
        var originalelemevt = jQuery.Event( "keypress" );
        originalelemevt.which = e.which;
        originalelemevt.keycode = e.keycode;

        $('#'+origid).trigger( originalelemevt );
        var newval = '';
        if(value.length >=4){
            var orignal = value.substring(0,value.length-4);
            for(var i=0;i<orignal.length;i++)
                newval +='*';

            newval +=value.substring(orignal.length);
            $(this).val(newval);
        }

    });
$(“.maskedinput”).keyup(函数(e){
var值=$.trim($(this.val());
var origid=$(this.attr('origid');
var originalelemevt=jQuery.Event(“keypress”);
originalelemevt.which=e.which;
originalelemevt.keycode=e.keycode;
$('#'+origid).trigger(originalelemevt);
var newval='';
如果(value.length>=4){
var orignal=value.substring(0,value.length-4);
对于(变量i=0;i=4){
var orignal=value.substring(0,value.length-4);

对于(var i=0;i这就是我所寻找的,id1上的按键事件

$(“#id1”)。按键(功能(e){
var inputkey=e.which | | e.keyCode;
var result=getInputSelection(document.getElementById(“id1”);
$(“#id2”)。触发器(“按键”)
.val(函数(i,val){
var key=e.which | e.keyCode;
//返回this.value+String.fromCharCode(键);
返回this.value.substr(0,result.start)+String.fromCharCode(key)+this.value.substr(result.end)
});
});
$(“#id1”).keyup(函数(e){
掩码('id1');
});
$(“#id1”).keydown(函数(e){
var inputkey=e.which | | e.keyCode;
//警报(输入键);
如果(inputkey==8){
e、 预防默认值();
var new_val=replaceValue(输入键);
//警报(新值);
$(“#id1”).val(新值);
$(“#id2”).val(新值);
//掩码('id1');
}否则如果(inputkey==46){
e、 预防默认值();
var new_val=replaceValue(输入键);
//警报(新值);
$(“#id1”).val(新值);
$(“#id2”).val(新值);
//掩码('id1');
}
});
函数掩码(elid){
var$this=$(“#”+elid);
$this.val($this.val().replace(/。(?=。{4})/g,'*');
}
函数替换值(inputkey){
var result=getInputSelection(document.getElementById(“id1”);
//警告(“退格”+result.start+,“+result.end”);
var new_val=$(“#id1”).val();
if(result.start==result.end){
如果(inputkey==8){
new_val=$(“#id2”).val().substr(0,result.start-1)+$(“#id2”).val().substr(result.end);
}否则如果(inputkey==46){
新的$(“#id2”).val().substr(0,result.start)+$(“#id2”).val().substr(result.end+1);
}
}否则{
new#val=$(“#id2”).val().substr(0,result.start)+$(“#id2”).val().substr(result.end);
}
返回新值;
}
函数getInputSelection(el){
var start=0,
结束=0,
标准化值、范围、,
textInputRange,len,endRange;
if(el.selectionStart的类型=“number”&&type el.selectionEnd==“number”){
开始=el.selectionStart;
结束=el.selectionEnd;
}否则{
range=document.selection.createRange();
if(range&&range.parentElement()==el){
len=el.value.length;
normalizedValue=el.value.replace(/\r\n/g,“\n”);
//创建仅存在于输入中的工作TextRange
textInputRange=el.createTextRange();
textInputRange.moveToBookmark(range.getBookmark());
//检查选择的开始和结束是否在最末端
//由于moveStart/moveEnd不返回我们想要的内容,所以
//在这些情况下
endRange=el.createTextRange();
endRange.collapse(假);
if(textInputRange.compareEndPoints(“StartToEnd”,endRange)>-1){
开始=结束=长;
}否则{
start=-textInputRange.moveStart(“字符”、-len);
start+=normalizedValue.slice(0,start).split(“\n”).length-1;
if(textInputRange.compareEndPoints(“EndToEnd”,endRange)>-1){
结束=len;
}否则{
end=-textInputRange.moveEnd(“字符”,-len);
end+=normalizedValue.slice(0,end).split(“\n”).length-1;
}
}
}
}
返回{
开始:开始,
完:完
};
}
正文{
背景:#20262E;
填充:20px;
字体系列:Helvetica;
}
#横幅信息{
背景:#fff;
边界半径:4px;
填充:20px;
字体大小:25px;
文本对齐:居中;
过渡:均为0.2s;
保证金:0自动;
宽度:300px;
}
钮扣{
背景:#0084ff;
边界:无;
边界半径:5px;
填充:8px 14px;
字体大小:15px;
颜色:#fff;
}
#banner-message.alt{
背景:#0084ff;
颜色:#fff;
边缘顶端:40px;
宽度:200px;
}
#banner-message.alt按钮{
背景:#fff;
颜色:#000;
}

SSN:

这种行为有何用处?关于用户体验——如果我是一个用户,开始输入任何敏感信息,我会停止并关闭浏览器,然后进行手动病毒扫描。从用户的角度来看,这种行为是不稳定的,因为它会立即显示敏感信息,然后恢复为部分屏蔽——这种模式可能会大多数用户(包括me)都不熟悉。允许用户通过复选框提供切换开关来决定输入的显示方式(带或不带掩码)(常用实现),按钮,或类似的表单控件或交互式标记。检查URL。这有3个不同的选项来解决相同的问题。选项2没有用,如果输入需要精确,有部分视觉提示有什么用?例如,密码=12hhg9I,输入显示:***g91。用户可能只是假设它是12hh,但实际上是错误的,因为它是11hh--那么,在这一点上,你认为掩蔽部分帮助用户捕捉错误或分散用户的注意力吗?用户按下一个键并按住它,这样整个输入都是可见的……试着向用户解释一下。AFAIK用户不会将手指放在一个键上,除非是使用带有shift、control、alt等的组合键。