【问题标题】:Hidden Field Value in JavaScript is not postedJavaScript 中的隐藏字段值未发布
【发布时间】:2016-03-01 14:37:38
【问题描述】:

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

  • 函数被调用。
  • ID 被传输到函数中。
  • 可以访问隐藏字段。
  • 隐藏字段的值可以更改。
  • 被调用站点在隐藏字段中没有值。
  • 如果我使用提交按钮而不是 onclick="DeleteEvent(someValue)",则该值将转移到被调用站点...所以它是隐藏字段...

不知何故...有人知道它可能是什么吗?
提交作品,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>

【问题讨论】:

  • 您是否尝试过像这样使用 jquery 进行表单提交 $('form#formid').submit()
  • 是的。不用找了。调用函数,提交表单,缺少值。
  • 点击不可见 div 中不存在的图像时会做些什么?你能提供一个可测试的例子吗?

标签: javascript html forms hidden-field


【解决方案1】:

由于活动链接事件,您的表单无法正常工作。 将event.preventDefault() 用于onclick 事件。 要解析函数中的事件,您需要将其发送到您的函数。

<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();
}

【讨论】:

  • 我在 jquery $.function() 中也有这个函数......现在没有它并且使用 preventdefault,它可以工作。谢谢。
【解决方案2】:

此代码中的问题是图像之前的链接标记,它在提交之前单击时将浏览器发送到无处,因此提交无法正常工作。只需为图像提供 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多