1

对不起,我有一个问题,当我以 html 表单提交输入类型提交时,为什么我的函数没有执行,这是我的代码:

<script type="text/javascript">
   function submitHidden( ){
        document.getElementById("formParser").submit();
    }
    window.onload = setInterval(submitHidden, 10*1000 );

    function audioPlay(){
        document.getElementById("sirine").play();
        return true;
    }
</script>

<audio type="hidden" id="sirine" src="sirine.mp3" controls="controls">

<form id="formParser"  action="" method="post" onsubmit="audioPlay()">
<input type="submit" value="Click here to send">
</form>

为什么我的音频 sirine 无法播放。我的代码有什么问题吗?对不起,我英语不好,谢谢你的提前,:)

4

2 回答 2

1

好的,让我们为您解决它。

首先看看我为你制作的这个小提琴:http: //jsfiddle.net/gartz/7dASQ/3/

让我们解释一下:

  1. 如果你使用submit()它baypass的方法onsubmit
  2. 您可以模拟click元素按钮的事件,这样将在不绕过 onsubmit 的情况下提交您的表单
  3. 您的音频元素类型错误,时间是文件提示,没有隐藏,您可以使用 CSS 隐藏它style="display: none"或删除controls标签

这是您的固定代码:

<script type="text/javascript">
function submitHidden( ){
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    document.getElementById("submitButton").dispatchEvent(evt);
  }
  window.onload = function() {
    setInterval(submitHidden, 10*1000 );
  }

function audioPlay(){
    document.getElementById("sirine").play();
    return false;
}
</script>
<form id="formParser"  action="#" method="post" onsubmit="audioPlay(); return false;">
  <input id="submitButton" type="submit" value="Click here to send">
</form>
<audio id="sirine">
  <source src="http://musicsringtone.com/wp-content/uploads/2009/01/air-raid-siren-alert.mp3" type="audio/mpeg">
</audio>

PS.:如果有人试图杀死你,我不承担任何责任,因为每 10 秒就会响起一个警报器。

于 2013-01-05T06:36:47.687 回答
0

The problem is that you are submitting the form every 10 seconds in the submitHidden() function. When you use JavaScript's submit() function, it bypasses the onSubmit handler.

于 2013-01-05T05:48:52.893 回答