我是ColdFusion的新手,我正在努力想办法做一些简单的功能,我可以在MS Access中轻松地做。
我一直收到一个错误:没有名为“submit”的方法。仅当表单格式为flash时,才会出现此错误。
任何帮助都将不胜感激。
<html>
<cfparam name="form.state" default="">
<cfparam name="form.lastname" default="">
<!---Grid Source--->
<cfquery name="getArtists" datasource="cfartgallery">
SELECT A.*
FROM ARTISTS A
WHERE
1=1
AND STATE like <cfqueryparam value="%#form.state#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255">
AND LASTNAME like <cfqueryparam value="%#form.lastname#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255">
ORDER BY A.LASTNAME, A.FIRSTNAME
</cfquery>
<head>
</head>
<body style="padding:20px;">
<cfform action="TEST.cfm" method="post" format="flash">
<cfformgroup type="horizontal" style="backgroundAlpha:0;font-size:12;color:##000;">
<cfformgroup type="vertical" width="100">
<!---Query for STATE--->
<cfquery name="getState" datasource="cfartgallery">
SELECT A.STATE
FROM ARTISTS A
WHERE
1=1
AND LASTNAME like <cfqueryparam value="%#form.lastname#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255">
</cfquery>
<!---STATE Dropdown--->
<cfselect name="state" query="getState" queryposition="below"
label="State:"
value="STATE"
display="STATE"
required="no"
selected="#form.state#"
onchange="submit();"
style="backgroundAlpha:0;" width="125">
<option></option>
</cfselect>
</cfformgroup>
<cfformgroup type="vertical" width="100">
<!---Query for LastName--->
<cfquery name="getLast" datasource="cfartgallery">
SELECT A.LASTNAME
FROM ARTISTS A
WHERE
1=1
AND STATE like <cfqueryparam value="%#form.state#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255">
</cfquery>
<!---LastName Dropdown--->
<cfselect name="lastname" query="getLast" queryposition="below"
label="Last Name:" value="LASTNAME" display="LASTNAME"
selected="#form.lastname#"
required="no"
onchange="submit();"
style="backgroundAlpha:0;" width="125">
<option></option>
</cfselect>
<a href="TEST.cfm"><input type="button" value="Reset"></a>
</cfformgroup>
</cfformgroup>
<cfformitem type="spacer" height="20"/>
<!---Grid--->
<cfgrid name="myGrid" query="getArtists" format="html">
<cfgridcolumn name="ARTISTID" header="ARTISTID" width="75" headeralign="center" dataalign="center"/>
<cfgridcolumn name="FIRSTNAME" header="FIRSTNAME" width="100" headeralign="center" dataalign="center"/>
<cfgridcolumn name="LASTNAME" header="LASTNAME" width="75" headeralign="center" dataalign="center"/>
<cfgridcolumn name="ADDRESS" header="ADDRESS" width="100" headeralign="center" dataalign="center"/>
<cfgridcolumn name="CITY" header="CITY" width="125" headeralign="center" dataalign="center"/>
<cfgridcolumn name="STATE" header="STATE" width="125" headeralign="center" dataalign="center"/>
<cfgridcolumn name="POSTALCODE" header="POSTALCODE" headeralign="center" dataalign="center"/>
<cfgridcolumn name="EMAIL" header="EMAIL" width="125" headeralign="center" dataalign="center"/>
<cfgridcolumn name="PHONE" header="PHONE" headeralign="center" dataalign="center"/>
<cfgridcolumn name="FAX" header="FAX" headeralign="center" dataalign="center"/>
<cfgridcolumn name="THEPASSWORD" header="THEPASSWORD" headeralign="center" dataalign="center"/>
</cfgrid>
</cfform>
</body>
</html>发布于 2013-01-03 04:28:52
Dan提出了一个很好的观点,我最初的回答是基于HTML表单,而不是Flash表单。所以原始答案是无效的。然而,我发现ColdFusion中的Flash表单使用的是ActionScript,而不是JavaScript。请参阅此处的参考资料Using ActionScript in Flash forms。该页面还提到,可用于所有表单控件以重置或提交表单的自定义ActionScript函数是resetForm()和submitForm()。因此,尝试将onchange事件从submit();更改为submitForm(),如下所示:
onchange="submitForm()"我不知道ActionScript是否需要分号。
* -以下原始答案用于历史目的- *
您没有说明何时收到错误消息"no method with the name 'submit'.“。查看您提供的代码,我假设您在从表单的状态或姓氏下拉框中选择某些内容时会出现错误。当这两个选项中的任何一个发生更改时,您是否尝试提交表单?如果我的假设是正确的,那么您可以尝试为表单提供一个id,然后限定您的提交语句。如下所示:
给你的表单一个id
<cfform id="yourformid" action="TEST.cfm" method="post" format="flash">限定您的提交语句
<cfselect ...
onchange="document.getElementById("yourformid").submit();"发布于 2013-01-03 06:00:49
在此上下文中不会生成HTML表单。因此,您不能使用JavaScript/DOM
注意:<cfsavecontent>中的所有内容都是ActionScript:
<cfsavecontent variable="astest">
if(_global.arrMembers == undefined) _global.arrMembers = data.dataProvider.slice(0);
var arrMembers = _global.arrMembers;
var arrDisplay:Array = [];
for(var i = 0; i < arrMembers.length; i++)
{
if(arrMembers[i].dept == myselect1.value || myselect1.value == 'All')
{
arrDisplay.push(arrMembers[i]);
}
}
data.dataProvider = arrDisplay;
</cfsavecontent>然后:
<cfselect ... onChange="#astest#">参考:http://www.asfusion.com/examples/item/filtering-records-on-a-cfform-grid
发布于 2013-01-03 04:23:17
这,
onchange="submit();"将会是
onchange="this.form.submit();"如果你有一个超文本标记语言表单。我对flash表单不太确定。
https://stackoverflow.com/questions/14127408
复制相似问题