javascript oncut bug?

javascript oncut bug?,javascript,Javascript,在此代码中: <!doctype html> <body> <input id="a"/> <input id="b"/> <script> var a=document.getElementById("a"); var b=document.getElementById("b"); a.addEventListener("cut",function(e){ b.value=a.value; //the line abo

在此代码中:

<!doctype html>
<body>
<input id="a"/>
<input id="b"/>
<script>
var a=document.getElementById("a");
var b=document.getElementById("b");
a.addEventListener("cut",function(e){
    b.value=a.value;
    //the line above is not working as expected!
    //neither does this (as per tjm's answer): b.value=a.value.substr(0,a.selectionStart);
},true);

</script>
</body>

var a=document.getElementById(“a”);
var b=document.getElementById(“b”);
a、 addEventListener(“剪切”,函数(e){
b、 value=a.value;
//上面的线路未按预期工作!
//这也不是(根据tjm的回答):b.value=a.value.substr(0,a.selectionStart);
},对);
在文本框a中进行剪切时,我希望文本框b的值与文本框a的值相同。。但它不起作用。有人能解决这个问题吗

我需要在IE9中工作的解决方案


(到目前为止有3个答案,但没有一个有效。我不敢相信我们不能用javascript实现这一点。这就像是我们需要的不太常见但仍然很常见的东西之一,不是吗?)

我认为这可以按照您的要求工作

<script>
var a = document.getElementById("a");
var b = document.getElementById("b");

a.addEventListener("cut", function(e) {

    var s = a.value;
    b.value = s.substr(0,a.selectionStart) + s.substr(a.selectionEnd);

}, false);

</script>

var a=document.getElementById(“a”);
var b=document.getElementById(“b”);
a、 addEventListener(“剪切”,函数(e){
var s=a.值;
b、 value=s.substr(0,a.selectionStart)+s.substr(a.selectionEnd);
},假);
您可以试试

a.addEventListener("beforecut",function(e){
    b.value=a.value;
});

这肯定不是最好的解决方案,但它是有效的。您可能可以降低超时以使其更好。这完全是一种黑客行为。我只是不知道还有什么好建议

a.addEventListener("cut", function(evnt) {
    setTimeout(function() {
        document.getElementById("b").value = evnt.srcElement.value;
    },100);
}, true);

当我在JSFIDLE上测试时,当我剪切框A中的文本时,它会出现在框B中。您想做什么?您使用的是哪种浏览器?此代码在Firefox中不起作用,因为未定义
a
——您必须在i类型“asd”中使用
document.getElementById('a').addEv…
@Kyle,然后我选择“s”并进行剪切。现在A中的值是“ad”。然而,B中的值为“asd”。我希望B的值为“ad”(即A的值)@brianpeiris问题更新=D@ShenHong. 好的,我更新了答案。我认为这个确实有效。不管怎样,我希望如此。你和凯尔的方法都有效。顺便问一下,你个人认为哪种方法“更好”?@ShenHong。很高兴它起作用了。我希望我的方法附带一个条件,即
selectionStart/End
在您希望支持的所有浏览器上都可用。我以前没有真正使用过它们,所以我不能告诉你,所以我认为了解这一点很重要。
setTimeout
方法引入了一定程度的不确定性,即它是否始终有效,但如果您发现我的方法在任何需要的地方都不起作用,那么它可能是一个必要的回退。
aftercut
事件将是理想的选择,但正如您所说,没有,因此目前我认为这是一个不错的折衷方案(hack!)。我尝试过beforecut,但它不起作用。我想要的是“后切”,但没有这样的事件最终明白你的目的。我认为tjm的方法会奏效你和tjm的方法都有效。顺便说一句,你能评论一下你个人认为哪种方法“更好”?最好尽量避免设置超时,我同意。tjm的更好。我不知道选择开始/结束。