javascript - 将隐藏的输入值获取到jquery变量

标签 javascript jquery struts2 jquery-selectors ognl

我正在使用 struts 2 <s:iterator>标记将数据添加到 jsp 页面。基本上是这样的。

<s:iterator value="applicants" var="applicant">
   <label>Applicant Name</label>
   <s:property value="#applicant.firstName"/>
   <s:property value="#applicant.lastName"/>

   <button class="btn btn-success">Approve</button>
   <s:hidden class="applicantid" value="%{#applicant.id}"/>
</s:iterator>

单击批准按钮时,如何将相关申请人 ID 获取到 jquery 中的变量?我尝试了 closest()、siblings() 方法,但没有用。任何帮助将不胜感激。

最佳答案

您正在使用 class 而不是不存在的 cssClass。一些 Struts2 标签允许动态属性,因此在其中一些标签上,放置 class 将起作用,在其他更严格的标签上,它会引发解析错误。始终在 Struts 标记中使用 cssClasscssStyle

也就是说,你的解决方案

var hidden_value = $(this).closest('div').find('input[type="hidden"]').val();

依赖于 Struts2 主题生成的 html,如果您更改项目的主题、表单、元素,甚至通过升级 Struts 库,它可能会发生变化。您应该改用适当的选择器,在本例中为第一个选择器:

var hidden_value = $(".applicantid").val();

但是,这将应用于具有该类的每个元素。

如果您需要将它应用于单个元素(按下按钮旁边的元素),只需为每个隐藏元素生成一个唯一的 id 并使用 id 选择器,例如:

<s:iterator value="applicants" var="applicant" status="ctr">
   ...
   <s:hidden id="applicantid_%{#ctr.index}" 
       cssClass="applicantid" 
          value="%{#applicant.id}"/>
</s:iterator>

var hidden_value = $("#applicantid_1").val();

在某处检索到唯一编号的地方,例如基于迭代也在按钮的 id 中生成(如 button_1),使用 javascript 提取并用于安装隐藏的 id(applicantid_1 )。

关于javascript - 将隐藏的输入值获取到jquery变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114551/

相关文章:

javascript - 当面板已经打开时滑动切换面板(向下滑动)

javascript - HTML5 输入范围验证

javascript - 如何修复 JSLint "missing new"错误

javascript - 更改另一个页面的元素属性

java - 我怎样才能告诉 Struts2 在第一次显示时不要验证表单?

java - 如何使用 Struts 2 在 jsp 中获取操作 url

java - Struts 2 "<s:if>"标签无法按预期工作

javascript - Stripe 支付示例未显示

php - 将类添加到 Wordpress 图像 <a> anchor 元素

jquery - .on 事件在加载时触发而不是单击