2016-04-27 2 views
0

// Я хочу, когда вы войдете в поле ввода, музыка начнет воспроизводиться, когда вы выходите на поле, музыка останавливается.Воспроизведение музыки при вставке/фокусе/размытии в поле ввода внутри html с помощью jQuery

// У меня есть следующий код вставки тег внутри тела 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> 

// Inside сценарий расслоение плотной:

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

К сожалению, я пытался сосредоточиться, размытие, KeyUp ... это не работает. (Если я сразу же положу путь к атрибуту src вставляемого тега, когда вы загружаете страницу, которую начинает воспроизводить музыка)

+0

Я не думаю, что этот подход, скорее всего, будет работать на то, что вы хотите сделать. Я думаю, вам, возможно, понадобится посмотреть на API веб-аудио, чтобы достичь этого. [Эта статья] (https://24ways.org/2013/make-your-browser-dance/) - хорошее введение в веб-аудио. –

+0

Спасибо, Мэтью ... Я посмотрю. – Danis35

ответ

0

Попробуйте добавить новый элемент вместо изменения src.

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

О! Он работает в Chrome (не в Firefox)! просто небольшая проблема ... когда я выхожу из поля, музыка продолжает играть. У вас есть идея, как это исправить? – Danis35

0

Это правильно работает в моем приложении, попробуйте использовать аудио тег вместо встраивать тег.

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

, а затем изменить сценарий, как это:

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

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

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

Вы можете использовать .blur() или .focusout() функция (которая когда-либо работает для вас) из JQuery, чтобы остановить музыку, когда контрольные потери фокус:

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

Summer Singh У меня такое же поведение ... он не останавливается, когда выходите из поля – Danis35

+0

Я обновил код, чтобы остановить музыку, когда вы выйдете из поля. – sumngh

+0

Также он работает во всех браузерах, поскольку я использую его на своем веб-сайте. – sumngh

0

Я пробовал это и работал !!!

    $("#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

Прекрасно работает в Chrome и Firefox. К сожалению, странное поведение в IE (всплывает маленькое окно медиаплеера и воспроизводит там песню). Общий вопрос в конце концов ... ОК мы нашли решение ... но почему мой самый первый подход jQuery не работал? Обычно это должно было сработать! – Danis35