javascript - Handlebars 表单提交不起作用

标签 javascript php jquery handlebars.js

我有一个表单,在 Handlebars 内放置提交不起作用,我必须做什么?有人可以帮忙吗?

 <script id="chat-window-template" type="text/x-handlebars-template">
      <a href="#" class="close"><i class="fa fa-times"></i></a>
      <a href="#">
        <span class="pull-left">
        <img src="{{ user_image }}" width="40">
        </span>
        <span class="contact-name">{{user}}</span>
      </a>
    <div class="panel-body" id="chat-bill">	
	<form id="messageForm">
	   <input id="nameInput" type="hidden" class="input-medium" value="Macbook" />
	   <input id="messageInput" type="text" class="form-control" placeholder="Digite uma mensagem..." />
	   <input type="submit" value="Send" />
	</form>
   </div>
</script>

$("#messageForm").submit( function() {alert();});

最佳答案

在提交时运行 JS 的另一种可能性是从表单元素的 onsubmit 属性返回 false:

模板.hbs

<form id="myForm" onsubmit="myFunc(); return false;">
  <input id="textInput" type="text"></input>
  <input type="submit"></input>
</form>
...
<script src="js/handleForm.js" type="text/javascript"></script>

handleForm.js

function myFunc() {
  console.log("yo");
}

这将在浏览器控制台中记录“yo”。它之所以有效,是因为在 onsubmit 属性中返回 false 会阻止浏览器的默认操作(这是一个 html 事物,而不是一个节点或 hbs 事物)。因此,页面不会重新加载,并且不会将查询字符串添加到超链接,但 myFunc() 将运行。

如果您想使用表单数据,只需从 DOM 中获取您喜欢的数据即可。一种选择是在文本输入上放置一个 id(就像我在 template.hbs 中所做的那样)并使用 jQuery 获取它,如下所示:

handleForm.js(已修订)

function myFunc() {
  var formText = $("#textInput").val();
  // Do something with formText
}

关于javascript - Handlebars 表单提交不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840611/

相关文章:

JavaScript/jQuery 制作触发器时遇到问题

javascript - 通过 Google Maps API 计算行车距离

javascript - Backbone Collections - 无法使用 set 方法设置 'rank'

javascript - 将 PHP 字符串传递给 JavaScript 函数

javascript - 需要有关 jQuery 单击功能的帮助

javascript - 反向排列指数

php - 将数组放入 session symfony2

php - 在 PHP 版本 5.4.19 中运行 CakePHP 1.2.9

jquery等待ajax方法调用

javascript - 重构 Jquery 函数以使其可重用