为啥在表单操作页面中结构键值显示两次像“提交,提交”?
Posted
技术标签:
【中文标题】为啥在表单操作页面中结构键值显示两次像“提交,提交”?【英文标题】:Why the structure key value displaying twice like "Submit,Submit" in the form action page?为什么在表单操作页面中结构键值显示两次像“提交,提交”? 【发布时间】:2019-10-03 22:41:45 【问题描述】:当我使用 validate.js 添加表单验证时,它的验证正常并显示验证消息。但是输入 type="submit" 值在操作页面结构中显示了两次。
对于 Illustrate,我有两个 .cfm 文件,index.cfm 具有带有验证的简单表单,而 actionview.cfm 具有
在 html 和 jQuery 验证代码中,在 index.cfm 中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery validation plug-in - main demo</title>
<link rel="stylesheet" href="css/screen.css">
<script src="../lib/jquery.js"></script>
<script src="../dist/jquery.validate.js"></script>
<script>
$.validator.setDefaults(
submitHandler: function()
form.submit();
);
$(document).ready(function()
$("#commentForm").validate();
);
</script>
<style>
#commentForm
width: 500px;
#commentForm label
width: 250px;
#commentForm label.error, #commentForm input.submit
margin-left: 253px;
</style>
</head>
<body>
<div id="main">
<h1 id="banner"><a href="https://jqueryvalidation.org/">jQuery Validation Plugin</a> Demo</h1>
<p>Default submitHandler is set to submitting the form</p>
<form class="cmxform" id="commentForm" method="post" action="actionView.cfm">
<fieldset>
<legend>Please provide your name, email address (won't be published) and a comment</legend>
<p>
<label for="cname">Name (required, at least 2 characters)</label>
<input id="cname" name="name" minlength="2" type="text" required>
</p>
<p>
<label for="cemail">E-Mail (required)</label>
<input id="cemail" type="email" name="email" required>
</p>
<p>
<label for="curl">URL (optional)</label>
<input id="curl" type="url" name="url">
</p>
<p>
<label for="ccomment">Your comment (required)</label>
<textarea id="ccomment" name="comment" required></textarea>
</p>
<p>
<input class="submit" type="submit" name="submit" value="Submit">
</p>
</fieldset>
</form>
</div>
</body>
</html>
在 actionView.cfm 中,
<cfdump var="#form#" />
这里我给出了表单和转储结构的屏幕截图:
示例表格,
倾倒的结构,
在转储结构中,提交按钮值为 "Submit,Submit" 。但通常我已经提交了显示“提交”的表单。我不确定为什么会这样?
有什么我错过的吗?如果有人解释为什么它显示两次,我将不胜感激?
提前致谢!
【问题讨论】:
您是否进行过任何实验或故障排除?当您删除或更改value="Submit"
时会发生什么?当你改变name="submit"
时怎么样。 ColdFusion 文档说什么应该显示在该插槽中?
当使用 method="POST" 时,表单中的任何内容都不会添加到查询字符串中。
@Sparky 当我更改了 value 和 name 属性时,什么也没发生,提交按钮的值仍然显示为两次。
是@ScottStroz 正确,表单作为POST 方法提交。因此,将字段值作为查询字符串传递没有任何变化。
去掉 jQuery Validation 代码。删除调用以包含 JS 文件并删除输入字段验证属性。只需提交基本表单,看看问题是否仍然存在。
【参考方案1】:
这确实是评论,但是太长了。我只是在没有 jqueryvalidate 的情况下运行了代码,我得到了这个:
建议
改变
<input class="submit" type="submit" name="submit" value="Submit">
到
<button class="submit" type="submit" name="submit" value="">Submit</button>
【讨论】:
我相信 OP 正在寻找关于为什么会发生这种情况的解释。他从未描述过需要防止这种情况发生的问题。 发生这种情况的原因可能是表单正在为名为“提交”的字段发送两个值。第二个值显然是由 jQuery 验证例程注入的,可能是通过form.submit()
,这也是为什么更改为button
只提交一次。
@James A Mohler,感谢您的长评论。当我检查上面的 标记时,它为提交键抛出空值。并且没有 jQuery 验证它的工作正常。
@Sparky 是的,我需要知道为什么会这样。当我在我的应用程序中使用 jquery 验证器时,表单提交在表单结构中给出了两倍的值。
@SathishChelladurai,为什么你需要知道吗? 如何这是个问题?以上是关于为啥在表单操作页面中结构键值显示两次像“提交,提交”?的主要内容,如果未能解决你的问题,请参考以下文章
怎么用ajax 提交上传的文件上传后在界面显示出来。但界面不刷新