2011-09-07 31 views
0

我有一个带有两个提交按钮的cfform,我的操作页面中的逻辑完全适用于safari,chrome,FF和IE9。但IE8和更少有问题。在IE8或更少由于某种原因它似乎无法发送操作页面的提交按钮的值,所以它永远不会使它在我的任何if语句。ColdFusion Internet Explorer Form提交问题

表格代号:

<cfform action="appQuery.cfm?loc=personal" method="post" data-ajax="false"> 
      <label for="fName">First Name</label> 
      <cfinput type="text" name="fName" value="#fName#" style="width: 200px;"><br> 
      <label for="MI">Middle Initial</label> 
      <cfinput type="text" name="MI" value="#MI#" maxlength="1" style="width: 40px;"><br> 
      <label for="lName">Last Name</label> 
      <cfinput type="text" name="lName" value="#lName#" style="width: 200px;"><br> 
      <label for="dob">Date Of Birth Ex. 03/13/94</label> 
      <cfinput type="text" name="dob" maxlength="8" value="#dob#" style="width: 100px;"><br> 
      <fieldset data-role="controlgroup" data-type="horizontal" > 
       <legend>Gender</legend> 
       <label for="1">Female</label> 
       <input type="radio" value="Female" name="gender" id="1" <cfif #gender# eq "Female">checked</cfif> > 
       <label for="2">Male</label> 
       <input type="radio" value="Male" name="gender" id="2" <cfif #gender# eq "Male">checked</cfif>> 
      </fieldset> 
      <div data-role="fieldcontain"> 
       <label for="ethnicity" class="select">Choose Ethnicity</label> 
       <select name="ethnicity" id="ethnicity" data-native-menu="false" data-inline="true" class="eth" onChange="change()"> 
        <option value="Hispanic" <cfif #Ethnicity# eq "Hispanic">selected</cfif>>Hispanic</option> 
        <option value="African American" <cfif #Ethnicity# eq "African American">selected</cfif>>African American</option> 
        <option value="Asian/Pacific Islander" <cfif #Ethnicity# eq 'Asian/Pacific Islander'> selected</cfif>>Asian/Pacific Islander</option> 
        <option value="Caucasian" <cfif #Ethnicity# eq "Caucasian"> selected</cfif>>Caucasian</option> 
        <option value="Other" id="other">Other</option> 
       </select> 
      </div> 
      <div id="ethCustom" style="visibility:hidden;" data-role="fieldcontain"> 
       <label for="ethOther">Ethnicity</label> 
       <cfinput type="text" name="ethOther" style="width: 200px;" /><br> 
      </div> 
      <cfinput type="submit" data-inline="true" value="Save and Contiune Later" name="submit" /> 
      <cfinput type="submit" data-inline="true" value="Save and Contiune Now" name="submit" /> 
     </cfform> 

行动页:

<cfif #URL.loc# eq "personal" AND #FORM.submit# eq "Save and Contiune Now"> 
    <cfquery datasource="#dbname#" username="#dbuser#" password="#dbpass#" name="personal1"> 
    UPDATE student 
    SET fName = '#FORM.fName#', lName = '#FORM.lName#', MI = '#FORM.MI#', dob = '#FORM.dob#', gender = '#FORM.gender#',<cfif #FORM.ethnicity# eq "Other"> Ethnicity = '#FORM.ethOther#'<cfelse> Ethnicity = '#FORM.ethnicity#'</cfif> 
    WHERE s_id = '#COOKIE.id#' 
    </cfquery> 
    <cflocation url="appProcess.cfm##contact" addtoken="no"> 
<cfelseif #URL.loc# eq "personal" AND #FORM.submit# eq "Save and Contiune Later"> 
    <cfquery datasource="#dbname#" username="#dbuser#" password="#dbpass#"> 
    UPDATE student 
    SET fName = '#FORM.fName#', lName = '#FORM.lName#', MI = '#FORM.MI#', dob = '#FORM.dob#', gender = '#FORM.gender#',<cfif #FORM.ethnicity# eq "Other"> Ethnicity = '#FORM.ethOther#'<cfelse> Ethnicity = '#FORM.ethnicity#'</cfif> 
    WHERE s_id = '#COOKIE.id#' 
    </cfquery> 
    <cflocation url="http://.com/logout.cfm" addtoken="no”> 
</cfif> 

是否有不同的方式,我可以有条件地检查其提交按钮被按下的是IE浏览器友好吗?

回答

1

请检查下列编码。希望它能帮助你。

表Page

<script> 
<!-- 
    function clickbtnSubmit(obj) { 
     document.myForm.btnPress.value = obj; 
    } 
--> 
</script> 

<cfform name="myForm" action="[yourActionPage]" method="post" data-ajax="false"> 
    <input type="Hidden" name="btnPress"> 
    ... 
    ... 
    ... 
    <cfinput type="submit" data-inline="true" value="Save and Contiune Later" onclick="clickbtnSubmit(this.value)" name="submit" /> 
    <cfinput type="submit" data-inline="true" value="Save and Contiune Now" onclick="clickbtnSubmit(this.value)" name="submit" /> 
</cfform> 

操作Page

<cfdump var="#form#"> 
+0

中使用maxlength几个问题可能是愚蠢的问题,但为什么是html注释中的函数?还有,cfdump标签有什么作用? – rajh2504

+0

请勿使用HTML评论。我把是让你知道哪个提交按钮被按下。 – ppshein

0

您可以将提交更改为按钮,然后在按下按钮时捕获onclick,更改隐藏的表单字段,然后提交。

或者,只需将两个提交按钮更改为无线电输入?

+0

我可能要指出的是好吧,你的cfquery中有你的参数值,这会导致SQ L注射..你刚刚发布你的网址。 –

+0

我是coldfusion的新手,cfqueries中的参数化值是什么?你也可以告诉我伪代码JavaScript的答案我很难弄清楚这个函数将如何工作。 – rajh2504

+2

内,您的CFQUERY的的,这样做: UPDATE学生 集FNAME =

0

不知道这将帮助:我使用的是IE浏览器版本8.0.6001.18702,我注意到提交按钮不当我按下回车键而不是按下“提交”按钮时通过。我在Chrome或Firefox中没有这个问题。一个简单的解决方法是创建一个隐藏的虚拟字段来传递和检查值,只需要添加一行并在同一CF页面上更改一行。

的2行是:
1.通过添加其中传递隐藏字段中的一个线上的虚拟字段的传(见下到最后一行;我使用的变量名输入)
2.添加的检查在你的代码的顶部的虚拟价值,“form.enter”的存在(见的样本第一行代码)

示例代码:my_edit_page.cfm

<cfif isdefined("form.update") OR isdefined("form.enter")> 
    <cfquery datasource="my_datasource" result="sqlerrm"> 
     [enter your SQL here] 
    </cfquery> 
    <cflocation url="my_edit_page.cfm?id=#url.id# /> 
</cfif> 
: 
:    
<cfform action="my_edit_page.cfm" method="post"> 

     : 
    <input type="submit" class="btn btn-primary" name="update" value="Update" /> 
    <input type="hidden" name="my_field" value="#myquery.my_field#" /> 
    <input type="hidden" name="enter" value="enter" /> 
</cfform> 
: