未选中单选按钮会中断页面​​,但如果选中则可以

时间:2017-07-25 23:29:06

标签: coldfusion

我有一个简单的表单,我试图传递数据,在操作页面上有一个电子邮件,发送我放入表单的数据。

在我的表单页面上。我有一个文本字段和两个单选按钮。

如果我没有将数据放入其中,我的文字字段就可以使用。但是,在我的单选按钮上,如果我检查它,页面是有效的,但是如果我根本不检查它会导致我的页面被打破,我不能确定我做错了什么?我希望页面处理默认值为" no"如果我没有检查任何单选按钮。我需要验证还是其他什么?

这是我的代码。

<cfparam name="form.firstName" default="">
<cfparam name = "form.optradio1" default="no">

<form action="test.cfm" method="post">
  <label for="firstName"></label>
  <input type="text" name="firstName">
  <input type="radio" name="optradio1" Value="Male" <cfif form.optradio1 eq "Yes">checked</cfif>>
</form>

1 个答案:

答案 0 :(得分:3)

这就是无线电和复选框输入在HTML中的工作方式。如果未选中,则不会在提交表单上提交。

要确定是否已检查无线电输入,您可以使用
如{中的.then structKeyExists(form, <name of the input, as string>)

structKeyExists(form, "optradio1")

假设您有两个无线电输入:

<cfparam name="form.firstName" default="">

<form action="test.cfm" method="post">
  <label for="firstName"></label>
  <input type="text" name="firstName">
  <input type="radio" name="optradio1" Value="Male" <cfif structKeyExists(form, "optradio1")>checked</cfif>>
</form>

您的初始代码无效,因为:

  • 如果选中,则<cfparam name="form.firstName" default=""> <form action="test.cfm" method="post"> <label for="firstName"></label> <input type="text" name="firstName"> <input type="radio" name="optradio1" Value="Male" <cfif structKeyExists(form, "optradio1") and form.optradio1 eq "Male">checked</cfif>> <input type="radio" name="optradio1" Value="Female" <cfif structKeyExists(form, "optradio1") and form.optradio1 eq "Female">checked</cfif>> </form> 等于form.optradio1
  • 如果未选中,Male因默认而被默认为form.optradio1 no