首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使按钮在EJS模板中工作

无法使按钮在EJS模板中工作
EN

Stack Overflow用户
提问于 2018-09-02 03:21:45
回答 2查看 3.4K关注 0票数 1

我有一个循环,它用几个项填充页面。每一项都有:

  • 图像
  • 文本
  • 按钮
  • 与其关联的唯一ID

作为测试,我编写了一个函数,在单击按钮时返回ID和计划名。但是,对于列表中的所有项,只返回第一个项的ID和计划名。当我查看HTML时,正确的唯一ID被填充在隐藏字段中,因此我很难弄清楚为什么单击时会返回正确的ID。

请参阅以下代码:

EJS:

代码语言:javascript
复制
<% for (var i = 0; i < plans.length; i++) {%>
  <div class="col-md-4" data-shuffle="item" data-groups="audio,video">
     <form>
        <a class="hover-move-up" href="#">
           <img src="/img/portfolio/1.jpg" alt="screenshot">
           <div class="text-center pt-5">
               <h5 class="fw-5001 mb-0"><%= plans[i].plan_name %></h5>
               <small class="small-5 text-lightest text-uppercase ls-2"><%= plans[i].regular_plan_cost %> | <%= plans[i].huddl_plan_cost %></small> 
                  <br>
                  <input id="planID" name="ID" type="hidden" value="<%= plans[i]._id %>">
                  <input id="planName" name="planName" type="hidden" value="<%= plans[i].plan_name %>">
                  <button type="submit" class="btn btn-primary">Join</button>
              </form>
                </div>
              </a>
            </div>

          <% } %>

联署材料:

代码语言:javascript
复制
var ID = document.getElementById("planID").value;
var planName = document.getElementById("planName").value;

$('button').on('click', function() {
  alert(ID + ' ' + planName);
})

如果你能帮我解决这个问题,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-02 06:00:29

用这个片段。

代码语言:javascript
复制
    <div class="text-center pt-5">
           <h5 class="fw-5001 mb-0"><%= plans[i].plan_name %></h5>
           <small class="small-5 text-lightest text-uppercase ls-2"><%= plans[i].regular_plan_cost %> | <%= plans[i].huddl_plan_cost %></small> 
              <br>
              <input id="planID_<%= i %>" name="ID" type="hidden" value="<%= plans[i]._id %>">
              <input id="planName_<%= i %>" name="planName" type="hidden" value="<%= plans[i].plan_name %>">
              <button data-ref="<%= i %>" class="btn btn-primary">Join</button>
          </form>
            </div>
          </a>
        </div>

我刚刚在IDS中添加了一个增量:

代码语言:javascript
复制
<input id="planID_<%= i %>"
<input id="planName_<%= i %>"
<button data-ref="<%= i %>"

所以,现在你有了你唯一的身份证。您还需要javascript“警告”吗?

这是一些额外的代码。我没有测试这个,而且我的jQuery已经生锈了,但希望这能满足您的需要。

Javascript:

代码语言:javascript
复制
$('button').each(function() {
  $(this).on('click', function() {
     myFN($(this).attr("data-ref"));
  })
});

function myFN(val) {
  var ID = document.getElementById("planID_" + val).value;
  var planName = document.getElementById("planName_" + val).value;
  console.log("VALUES: ", ID, planName);
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-02 03:25:28

看看你所拥有的表单标签,它不是正确的壁橱。你需要把它移到div和a标签下面。也许这能解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52133717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档