【问题标题】:jquery trigger key event to textbox from another text boxjquery触发键事件从另一个文本框到文本框
【发布时间】:2013-05-01 11:44:01
【问题描述】:

我想发送一个关键事件来模拟来自 mytext1mytext2 。这意味着当我在mytext1 中键入“a”时,它也应该显示在mytext2 中。此外,当我在mytext1 上按退格键时,它也应该受到mytext2 的影响。在某些情况下,mytext1 除了mytext2 剩下的东西之外什么都没有,在这种情况下,当我在mytext1 上按退格键时,mytext2 中的最后一个字母应该很清楚('它说我不希望两个文本框内容等于')。这是我的代码:

$('#mytext1').on('keydown',function(e){
  var keyCode = e.keyCode || e.which;

  $('#mytext2').trigger($.Event("keypress", { keyCode: keyCode }));
});

$('#mytext1').on('keypress',function(e){
  var keyCode = e.keyCode || e.which;
  this.val()+=keyCode;
});

 <input type='text' id='mytext1' value='this not eq to txt2'/>
  <input type='text' id='mytext2'value='this not eq to txt1'/>

* 即使删除,退格事件也会触发到 mytext2。就像我在 mytext2 上做的那样。认为我最初在不同的文本框上放置了相同的按键,但内容不同

谢谢,帮帮我。 - - - - - - - - - 更新 - - - - - - - - - - - - - - - - ------------------------------------------------ 最初认为 mytext1 的值为“ca” mytext2 的值为“bea” ,当我在mytext1 上按“t”时,它应该会受到mytext2 的影响。然后mytext1 将是“cat” mytext2 将是“beat”。如果我在mytext1 中按两次退格键,结果将是mytext1=>“c”,mytext2=>“be”。对不起,我的解释很糟糕。

【问题讨论】:

  • val是jQuery对象的方法,你应该编码this.value
  • 这只是我的想法,例如 $('#mytext1').val()=...this 引用当前对象
  • 你的想法(编辑过的)看起来很糟糕,在尝试了任何解决方案之后你就会明白为什么。 (插入符号位置
  • roXon 是对的,这是一团糟……有趣的一团……

标签: jquery eventtrigger


【解决方案1】:

http://jsbin.com/urilox/1/edit

$('#mytext1').on('input', function() {
  $('#mytext2').val(this.value);
} );

如果您还需要处理“粘贴”事件,这也是一个不错的方法。 (现代浏览器)
非现代用途:keyup paste propertychange


为了他们之间的交流 - 喜欢:

$('#mytext1, #mytext2').on('input', function() {
  $(this).siblings().val(this.value); // put both your inputs strictly inside a neutral parent!
} );

或者干脆

var $a=$('#mytext1'), $b=$('#mytext2');

$a.on('input', function() {
  $b.val(this.value);
} );
$b.on('input', function() {
  $a.val(this.value);
} );

【讨论】:

  • 我希望两个文本框都监听关键事件。不仅仅是粘贴到 mytext1 到 mytext2。
  • @user1822719 我不明白你的评论,我向你展示了要走的路,而不是你应该这样做:jsbin.com/urilox/4/edit?希望没有那么难;)
【解决方案2】:

http://jsfiddle.net/coma/kNPRM/4/

$(function() {

    var a = $('#a');
    var b = $('#b');

    var foo = function(input, string, code) {

        switch(code) {

            case 8:
                var s = input.val();
                input.val(s.substr(0, s.length -1));
                break;

            default:
                var c = String.fromCharCode(code);

                if(c.match(/\w/)) {

                    input.val(input.val() + string.slice(-1));

                }

        }

    };

    a.on('keyup', function(event) {

        foo(b, this.value, event.keyCode);        

    });

    b.on('keyup', function(event) {

        foo(a, this.value, event.keyCode);

    });

});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多