参与,验证和维护单选按钮

时间:2011-07-29 20:08:03

标签: coldfusion coldfusion-8

在表单中,有一些单选按钮供用户选择:

<li>
<label for="full professor"><span class="required">&##8727;</span>Is the candidate a full professor?</label>
    <input type="radio" name="fullProfessor" value="yes" tabindex="4" />Yes<input type="radio" name="fullProfessor" value="no" tabindex="5" checked/>No                                            </li> 

<li>
<label for="more than ten"><span class="required">&##8727;</span>Has the candidate been here for more than 10 years?</label>
<input type="radio" name="moreThanTen" value="yes" tabindex="6" />Yes<input type="radio" name="moreThanTen" value="no" tabindex="7" checked/>No                         </li> 

 <li>
<label for="past nominee"><span class="required">&##8727;</span>Has the candidate been nominated for this award in the last 3 years?</label>
<input type="radio" name="pastNominee" value="yes" tabindex="8" />Yes<input type="radio" name="pastNominee" value="no" tabindex="9" checked/>No                         </li> 

我不确定如何将它们包围起来。我使用的典型代码是:

    <cfparam
    name="FORM.fullProfessor"
    type="string"
    default=""
    />

是类型字符串,即使它不接受像textfield那样的字符串吗?

要验证单选按钮,请使用:

        <!--- Validate campus address. --->
    <cfif NOT Len( FORM.fullProfessor)>
        <cfset ArrayAppend(
            arrErrors,
            "Error message here."
            ) />
    </cfif>

最后,在验证页面后维护用户的选择,我该如何确保这一点?

<cfif isDefined(form.fullProfessor) selected="yes">?

感谢。

3 个答案:

答案 0 :(得分:1)

如果您使用“是”和“否”,您可以将它们视为布尔值。

<cfparam
name="FORM.fullProfessor"
type="string"
default=false
/>

 <cfif NOT FORM.fullProfessor>
    <cfset ArrayAppend(
        arrErrors,
        "Error message here."
        ) />
</cfif>

<cfif form.fullProfessor selected="yes">

您还可以使用框架验证表单,我强烈建议验证这一点:http://www.validatethis.org/

答案 1 :(得分:0)

  

是类型字符串,即使它不接受像a这样的字符串   textfield会吗?

type是您希望FORM.fullProfessor包含的值(日期,数字,字符串等)。由于您的单选按钮值为“是”或“否”,因此您可以在技术上使用type="string"type="boolean"

  

在验证页面后保持用户的选择

由于您已使用cfform,因此可以使用<cfform preserveData="yes" ..>。 (注意:表格必须提交到同一页面)。它将保留大多数表单字段的状态。或者,您可以利用单选按钮值为布尔值的事实,并使用它来设置按钮的checked状态。

<cfparam name="FORM.fullProfessor" type="boolean" default="no" />
<cfform>
    <cfinput type="radio" name="fullProfessor" checked="#FORM.fullProfessor#" value="Yes"> yes
    <cfinput type="radio" name="fullProfessor" checked="#not FORM.fullProfessor#" value="no"> no
    <input type="submit">
</cfform>

To validate the radio button

我不确定这里的验证有多么有用。您可以将默认值设置为no之类的合理值,并将其保留。取决于表格。

答案 2 :(得分:0)

使用现有CF函数的structkeyexists

<input type="radio" name="fullProfessor" value="yes" tabindex="4" <cfif structkeyexists(form.fullProfessor) AND form.fullProfessor EQ "true">checked</cfif> />