JavaScript - Cambiar valor input automaticamente

   
Vista:

Cambiar valor input automaticamente

Publicado por Luis Perez (3 intervenciones) el 22/11/2017 12:57:19
Buenas.

Tengo el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
<input hidden="" id="inp" type="text hidden" value="YES" />
<script type="text/javascript">
function checkInputValue(){
var files = { "YES": "audio/timbre.mp3", "NO": "audio/***.mp3" };
var sound = new Audio( files[ $('#inp').val() ] );
sound.play();
}
checkInputValue();
setTimeout(function(){
    document.getElementById("inp").value = "NO";
}, 2000)
 
</script>

La idea es que mientras en el input haya un valor por defecto YES qué hará que se reproduzca un sonido en bucle y al cambiar el valor a NO de forma automática pasados 2 segundos deje de reproducirse.

Actualmente con este código no está fallando, ¿alguien tiene alguna idea de dónde puede venir el fallo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox

Cambiar valor input automaticamente

Publicado por abzerox (106 intervenciones) el 23/11/2017 00:05:14
Hola, te fijaste en la consola que error esta lanzando? .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor input automaticamente

Publicado por Luis Perez (3 intervenciones) el 23/11/2017 08:51:19
Buenas abzreox

¿Te refieres a la consola del navegador?

Estoy usando Chrome y parece que no lanza ningún error...

Gracias por responder.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox

Cambiar valor input automaticamente

Publicado por abzerox (106 intervenciones) el 24/11/2017 06:00:24
Si lo que quieres es que el audio deje de reproducirse, alcanza con ejecutar el método pause del objeto audio, Algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<input id="inp" type="text" value="YES" hidden/>
    <script type="text/javascript">
        (function(){
            var input = document.getElementById('inp');
            var sound = null;
 
            function checkInputValue() {
                var files = { 'YES': 'audio.mp3' };
                sound = new Audio(files[input.value]);
                sound.play();
            }
 
            checkInputValue();
 
            setTimeout(function () {
                input.value = 'NO';
                sound.pause(); // pauso el audio
            }, 2000);
        })();
    </script>

Pero si lo que buscas es al cambiar el valor del input puedes jugar con los eventos focus y blur del input y luego si pausar el audio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<input id="inp" type="text" value="YES"/>
    <script type="text/javascript">
        (function(){
            var input = document.getElementById('inp');
            var sound = null;
 
            input.addEventListener('blur', e => {
                if (e.target.value === 'NO')
                    sound.pause();
            })
 
            function checkInputValue() {
                var files = { 'YES': 'audio.mp3' };
                sound = new Audio(files[input.value]);
                sound.play();
            }
 
            checkInputValue();
 
            setTimeout(function () {
                input.focus();
                input.value = 'NO';
                input.blur();
            }, 2000);
        })();
    </script>

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor input automaticamente

Publicado por Luis Perez (3 intervenciones) el 27/11/2017 09:00:17
Buenos días Abzerox,

Con la 2ª opción ha ido perfecto ;).

Muchas gracias por tu tiempo y por haber respondido.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad