2016-04-27 13 views
0

// Ich möchte, wenn Sie in das Eingabefeld gehen, beginnt die Musik zu spielen, wenn Sie das Feld mouseout, stoppt die Musik.Musik abspielen, wenn Sie in ein Eingabefeld innerhalb von html mit jQuery einfügen/focus/blur setzen

// Ich habe folgende embed-Tags innerhalb des Körpers von html:

<form id="myForm" action="userInfo.php" method="POST"> 
    <input type="text" name="name1" required="required" /> <br /> 
</form> 
<embed src="" autostart="true" loop="true" width="2"  height="0"></embed> 

// Innerhalb js Skript:

$(document).ready(function()){ 
    $("#myForm :input").focus(function(){ 
     $("embed").attr("src", "music/mysong.mp3"); 
    }); 
}); 

Leider habe ich versucht, Fokus, verwischen, keyup ... es funktioniert nicht. (Wenn ich den Pfad sofort auf das Attribut src des Tags embed setzen, wird die Musik beim Laden der Seite abgespielt)

+0

Ich glaube nicht, dass dieser Ansatz für das, was Sie tun möchten, wahrscheinlich funktioniert. Ich denke, Sie müssen möglicherweise die Web Audio API betrachten, um das zu erreichen. [Dieser Artikel] (https://24ways.org/2013/make-your-browser-dance/) ist eine gute Einführung in Web Audio. –

+0

Danke Matthew ... Ich werde es mir ansehen. – Danis35

Antwort

0

Versuchen Sie, ein neues Element hinzuzufügen, anstatt src zu ändern.

$(document).ready(function()){ 
    $("#myForm :input").focus(function(){ 
     element = $("embed"); 
     newEl = element.clone().attr("src", "music/mysong.mp3") 
     element.replaceWith(newEl); 
    }); 
}); 
+0

Oh! Es funktioniert in Chrome (nicht in Firefox) !! nur ein kleines Problem ... wenn ich vom Feld gehe, spielt die Musik weiter. Hast du eine Idee, wie das zu beheben ist? – Danis35

0

Dies funktioniert korrekt in meiner Anwendung, nur versuchen Audio Tag an seinem Platz zu verwenden, von Tag einbetten. ändern

<audio id="musicplay" autoplay="autoplay" loop="true"> 
     <source src="~/music/mysong.mp3" type="audio/mpeg" /> 
    </audio> 

und dann das Skript wie folgt aus:

$(document).ready(function()){ 

     $('#musicplay').get(0).pause(); 

     $("#myForm :input").focus(function(){ 
      $('#musicplay').get(0).play(); 
     }); 
    }); 

können Sie verwenden .blur() oder .focusout() Funktion (die immer für Sie arbeitet) von jquery die Musik zu stoppen, wenn die Kontrollverluste Fokus:

$("#myForm :input").blur(function() { 
    $('#musicplay').get(0).pause(); 
    }); 
+0

Summer Singh Ich habe das gleiche Verhalten ... es hört nicht auf, wenn ich aus dem Feld gehe – Danis35

+0

Ich habe den Code aktualisiert, um die Musik zu stoppen, wenn Sie aus dem Feld ausgehen. – sumngh

+0

Auch das funktioniert in allen Browsern, da ich es auf meiner Website verwende. – sumngh

0

Ich versuchte dies und arbeitete !!!

    $("#myForm :input").focus(function(){ 

        $("embed").attr("src", "music/mysong.mp3"); 

        //element = $("embed"); 
        newEl = $("embed").clone().attr("src", "music/mysong.mp3"); 
        $("embed").replaceWith(newEl); 
       }); 


       $("#myForm :input").focusout(function(){ 

        $("embed").attr("src", ""); 

        //element = $("embed"); 
        newEl = $("embed").clone().attr("src", ""); 
        $("embed").replaceWith(newEl); 
       }); 
+0

Funktioniert in Chrome und Firefox. Leider, seltsames Verhalten in IE (öffnet ein kleines Fenster von Media Player und spielt dort das Lied). Eine allgemeine Frage ist schließlich ... ok, wir haben eine Lösung gefunden ... aber warum hat meine erste Annäherung an jQuery nicht funktioniert? Normalerweise hätte es funktionieren sollen! – Danis35