0

我想在按下表单中的提交按钮时添加声音,但无论我做什么,声音都不会结束。它是 1 秒长,但表单在 1 秒内提交,所以听起来很糟糕。这是代码:

创建声音:

<script type="text/javascript">
    var html5_audiotypes={ 
        "mp3": "audio/mpeg"
    }

    function createsoundbite(sound){
        var html5audio=document.createElement('audio')
        if (html5audio.canPlayType){
            for (var i=0; i<arguments.length; i++){
                var sourceel=document.createElement('source')
                sourceel.setAttribute('src', arguments[i])
                if (arguments[i].match(/\.(\w+)$/i))
                    sourceel.setAttribute('type', html5_audiotypes[RegExp.$1])
                html5audio.appendChild(sourceel)
            }
            html5audio.load()
            html5audio.playclip=function(){
                html5audio.pause()
                html5audio.currentTime=0
                html5audio.play()
            }
            return html5audio
        }
        else{
            return {playclip:function(){throw new Error("Your browser doesn't support HTML5 audio unfortunately")}}
        }
    }
    var mouseClick=createsoundbite("sounds/cashSound.mp3")
</script>

HTML:

<form method='post' action='save.php'>
    <input type='submit' name='apply' value='Play' onclick='mouseClick.playclip()' />
</form>

我尝试了 setTimeout 功能,但它不起作用!有什么建议么?

4

2 回答 2

3

尝试在 playClip 函数中返回 false。这可能会导致提交操作不会被执行。您可以等待一秒钟,然后在表单元素上调用 submit()。您也可以通过 AJAX 发送表单。

于 2012-12-12T14:50:50.313 回答
0

抛开美学不谈,如果您真的希望声音完成,那么您需要延迟提交/延迟响应或在单独的框架中播放声音,该框架与表单不在同一页面内。

于 2012-12-12T14:49:41.807 回答