为什么表单标记拒绝单击事件?

时间:2016-12-19 04:44:53

标签: javascript html html5

我所拥有的 - 当用户选择下载按钮时,他们会根据他们的设备(android / iphone / desktop)定向到某个站点。我目前在它完美运行的地方设置它。我正在使用谷歌浏览器的设备工具栏来模拟设备。但是,当我将button标签放在form标签内时,不会发生click事件。什么都没发生。删除表单标记后,它可以正常工作。如何解决此问题但仍使用表单标记?感谢

编辑 - 我已经这样做了这些链接是表单标签内的动作,但是这也不起作用。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name='viewport' content='initial-scale=1'>
    </head>
    <body>

    <div>
           <form>
               <button type='submit' onclick='func();'>Download</button>
           </form>

    </div>

    </body>
    <script>
function func(){
       if (window.innerWidth >= 800 || window.innerHeight >= 600){      location.replace('aol.com'); 
    }     
    if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i) || navigator.userAgent.match(/webOS/i)) { location.replace('yahoo.com');
     }
    if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))){ location.replace('google.com');
       }
    }
    </script>

    </html>

2 个答案:

答案 0 :(得分:0)

在表单中添加ID并使用表单ID

提交表单
<form id="my_form" method="post" action="aol.com">
      <button type='submit' onclick='return func();'>Download</button>
    </form>

 <script>
function func(){
       if (window.innerWidth >= 800 || window.innerHeight >= 600){      location.replace('aol.com'); 
    }     
    if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i) || navigator.userAgent.match(/webOS/i)) { location.replace('yahoo.com');
     }
    if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))){ location.replace('google.com');
       }
    }
    // put this line for submit form
    jQuery("#my_form").submit();

    </script>

我希望这会有助于你。

答案 1 :(得分:0)

尝试使用[form element] .action()方法而不是location.replace()。

P.S。将该样本复制到您的网站,因为我可以看到下面的snippset阻止打开新网站。

&#13;
&#13;
function func(){
  var getForm = document.getElementById('form');
  if (window.innerWidth >= 800 || window.innerHeight >= 600){   
    getForm.action = 'http://aol.com';
  }     
  if (navigator.userAgent.match(/Android/i) ||
      navigator.userAgent.match(/BlackBerry/i) ||
      navigator.userAgent.match(/Windows Phone/i) ||
      navigator.userAgent.match(/webOS/i)) { 
        getForm.action = 'http://yahoo.com';
  }
  if ((navigator.userAgent.match(/iPhone/i)) ||
      (navigator.userAgent.match(/iPod/i)) ||
      (navigator.userAgent.match(/iPad/i))){ 
        getForm.action = 'http://google.com';
  }
}
&#13;
<div>
    <form id="form">
      <button type="submit" onclick='func()'>Download</button>
    </form>
</div>	
&#13;
&#13;
&#13;