【问题标题】:Play video if all input field are not empty如果所有输入字段不为空,则播放视频
【发布时间】:2019-02-03 12:56:32
【问题描述】:

我有一个简单的表单,我想在所有输入都填满且不为空时播放 HTML 5 视频。

问题:

如果是真正的播放视频,请检查所有表单输入是否不为空,否则执行其他操作。

这是我的解决方案

HTML:

 <video  id="videoPlayer" playsinline controls muted>
 </video>

<form action="/action_page.php" class="form">
  Enter your name:
  <input name="firstname" type="text">
  <input name="lastname" type="text">
  <br><br>
  <input type="submit">
</form>

Js

<script>
var movieSendData ="https://www.w3schools.com/html/mov_bbb.mp4"
var myVideo = document.getElementById('videoPlayer);

function playVideo(){
  myVideo.play();
}

(function() {
    var isValid = true;
    $('.form').each(function() {
      if ( $(this).val() === '' )
          isValid = false;
    });
playVideo(movieSendData);
  })();

</script>

很遗憾,我的解决方案没有按预期工作,我需要进行哪些更改才能得到我想要的?任何帮助将不胜感激

【问题讨论】:

    标签: javascript jquery html html5-video


    【解决方案1】:

    您需要在视频上设置 src 并且还需要if 检查,您还需要遍历输入而不是表单。

    <script>
    var movieSendData ="https://www.w3schools.com/html/mov_bbb.mp4"
    var myVideo = document.getElementById('videoPlayer);
    
    function playVideo(src) {
      myVideo.src = src;
      myVideo.play();
    }
    
    (function() {
        var isValid = true;
        $('.form input, .form textarea, .form select').each(function() {
          if ( $(this).val() === '' )
              isValid = false;
        });
        if (isValid) {
           playVideo(movieSendData);
        }
      })();
    
    </script>
    

    这将在初始化时运行(如果表单不在脚本标记之前它将不起作用,它将找不到.form)如果你想在提交时运行你需要:

    $('.form').submit(function() {
        var isValid = true;
        $('.form input, .form textarea, .form select').each(function() {
          if ( $(this).val() === '' )
              isValid = false;
        });
        if (isValid) {
           playVideo(movieSendData);
        }
        return false;
     });
    

    如果你得到错误,你可以在 null 上获取 value src,那么这意味着它找不到你的视频标签,那么你需要将整个代码包装在 $(function() { /* your code */ });

    编辑:工作堆栈 sn-p

    $(function() {
      var movieSendData ="https://www.w3schools.com/html/mov_bbb.mp4"
      var myVideo = document.getElementById('videoPlayer');
    
      function playVideo(src) {
        myVideo.src = src;
        myVideo.play();
      }
    
      $('.form').submit(function(e) {
          e.preventDefault();
          var isValid = true;
          $('.form input, .form textarea, .form select').each(function() {
            if ( $(this).val() === '' )
                isValid = false;
          });
          if (isValid) {
             playVideo(movieSendData);
          }
       });
     });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <video  id="videoPlayer" playsinline controls muted>
     </video>
    
    <form class="form">
      Enter your name:
      <input name="firstname" type="text">
      <input name="lastname" type="text">
      <br><br>
      <!-- the input need to have a value or it can be a button -->
      <input type="submit" value="submit">
    </form>

    【讨论】:

    • 我测试了它不工作,我想正如你所说的 init,我是否需要创建一个 init 函数并将这个函数添加到它?
    • @user9964622 到底是什么不工作,你有什么错误吗?
    • @user9964622 发现提交需要有值的错误,否则会以空值输入,无法播放。您也可以通过将&lt;input type="submit" 更改为button 来解决此问题(除非您设置type="button",否则默认提交)
    • 不提交事件是否可以实现我想要的?
    • @user9964622 是的,您只需要普通按钮,输入type="button"button type="button" 它不会提交表单。有了这个,您将需要点击事件或输入更改/按键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多