JavaScript 中的隐藏字段值未发布

Hidden Field Value in JavaScript is not posted

这个错误在不同的论坛中(再次)被讨论了一千次,但我没有找到任何可以帮助我解决问题的东西。我有一个表单、一个隐藏字段和一些链接,它们会更改此字段的值并提交表单。我检查了很多次。

不知何故...有人知道它可能是什么吗?
提交作品,href不...
还是 div?

的问题

源代码:

function DeleteEvent(id){
  var hiddenId = document.getElementById('hiddenIdField');
  hiddenId.value = id;
  document.forms['deleteForm'].submit();
}
<form action="" method="post" name="deleteForm">
  <input type="hidden" id="hiddenIdField" name="hiddenField" value="testy" />
  <div style="display: none" id="divText18">
    <br />
    <a href="" onclick="DeleteEvent(18)">
      <img src="images/delete.jpg"/>
    </a>
  </div>
<!-- 
  this is the working part:
  <input type="submit" onclick="DeleteEvent(18)" /> 
-->
</form>

此代码中的问题是图像前的 link 标记,它在提交前单击时将浏览器发送到无处,因此提交无法正常工作。只需将 onclick 事件赋予图像或将 "javascript:;" 作为 href 以保持浏览器在页面上。

function DeleteEvent(id){
  var hiddenId = document.getElementById('hiddenIdField');
  hiddenId.value = id;
  document.getElementById("deleteForm").submit();
}
<form action="" method="POST" id="deleteForm">
  <input type="text" id="hiddenIdField" name="hiddenField" value="testy" />
</form>
<div style="display: inline" id="divText18">
    <img src="images/delete.jpg" style="cursor: pointer;" onclick="DeleteEvent(18)" />
</div>

但如果您必须将它与 href 一起使用,请将其保留在页面上

<a href="javascript:;" onclick="DeleteEvent(18)">
  <img src="images/delete.jpg />
</a>

您的表单因活动 link 事件而无法正常工作。 对 onclick 事件使用 event.preventDefault()。 要在您的函数中解析事件,您需要将其发送到您的函数。

<form action="" method="post" name="deleteForm">
  <input type="hidden" id="hiddenIdField" name="hiddenField" value="testy" />
  <div style="display: none" id="divText18">
    <br />
    <a href="" onclick="DeleteEvent(18,event)">
      <img src="images/delete.jpg"/>
    </a>
  </div>
<!-- 
  this is the working part:
  <input type="submit" onclick="DeleteEvent(18)" /> 
-->
</form>

function DeleteEvent(id,event){
  event.preventDefault();
  var hiddenId = document.getElementById('hiddenIdField');
  hiddenId.value = id;
  document.forms['deleteForm'].submit();
}