JavaScript 中的隐藏字段值未发布
Hidden Field Value in JavaScript is not posted
这个错误在不同的论坛中(再次)被讨论了一千次,但我没有找到任何可以帮助我解决问题的东西。我有一个表单、一个隐藏字段和一些链接,它们会更改此字段的值并提交表单。我检查了很多次。
- 函数被调用。
- 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>
此代码中的问题是图像前的 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();
}
这个错误在不同的论坛中(再次)被讨论了一千次,但我没有找到任何可以帮助我解决问题的东西。我有一个表单、一个隐藏字段和一些链接,它们会更改此字段的值并提交表单。我检查了很多次。
- 函数被调用。
- 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>
此代码中的问题是图像前的 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();
}