HTML Onlcick事件仅适用于#锚标记

问题描述:

当我尝试使用下面的代码调用函数my this page时。我似乎只刷新页面而不是调用脚本。HTML Onlcick事件仅适用于#锚标记

<form role="search" name="locationForm"> 
     <div class="form-group"> 
     <input id="locationInput" type="text" class="form-control" placeholder="Search"> 
     </div> 
     <button class="btn btn-primary btn-lg" type="submit" onclick="start();">Submit</button> 
    </form> 

如果我加上“#”到URL的末尾,重新加载页面,则因为它是假设的onlcick事件的作品。

据我所知这些是锚标签,我不知道为什么他们将需要在调用的函数。

我该如何纠正?因为我不想使用#。

您正在使用button元素,该元素的默认行为在单击时提交其父窗体。 return false将停止提交形式:

<button class="btn btn-primary btn-lg" type="submit" onclick="start(); return false;">Submit</button> 
+0

这样做,谢谢你。现在想想看,它是有意义的,是试图发布,而不仅仅是行动onclick事件。 – Yonkee 2015-03-18 21:19:42

如果你不想按钮自动提交,你可以改变它的typebutton。然后,它所要做的就是运行它的onclick代码。 (你仍然可以让该代码手动提交表单)

+0

也是一个有用的回应。感谢那。 – Yonkee 2015-03-18 21:21:17

我想你想在提交表单时运行start()函数吗? 你说你正在使用一个点击事件监听器。 尝试倾听提交事件,而不是。

$('#your_form_id').on('submit', function(e) { 
    e.preventDefault(); 
    your script... 
}); 

上面的代码基本上是这样做的。 此外,preventDefault保持实际提交自身的形式。 你可以访问表单数据与

$('#your_form_id').serialize(); 

我希望这会使你进入正确的方向!