En este código:

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

Cuando hago un corte en text-box-a, quiero que text-box-b tenga el mismo valor que text-box-a ... pero no funciona. ¿Alguien tiene alguna solución a este problema?

Necesito la solución para trabajar en IE9.

(3 respuestas hasta ahora, aunque ninguna de ellas funcionó ... no puedo creer que no podamos hacer esto en JavaScript ... esto es como una de las cosas menos comunes pero aún comunes que necesitamos, ¿no? ?)

0
ShenHong 29 jun. 2011 a las 07:49

3 respuestas

La mejor respuesta

Creo que esto funciona como quieres.

<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>
2
tjm 29 jun. 2011 a las 04:35

Definitivamente, esta no es la mejor solución, pero funciona. Probablemente pueda reducir el tiempo de espera para hacerlo un poco mejor. Este es un truco total. Simplemente no sé nada más que aconsejar.

a.addEventListener("cut", function(evnt) {
    setTimeout(function() {
        document.getElementById("b").value = evnt.srcElement.value;
    },100);
}, true);
1
Kyle Rogers 29 jun. 2011 a las 04:52

Puedes probar

a.addEventListener("beforecut",function(e){
    b.value=a.value;
});
0
demix 29 jun. 2011 a las 04:28