ColdFusion变量设置不正确
我有一个带有一些html元素的表单。它有一个默认选中的复选框。单击submit按钮,它将调用submitForm函数 根据复选框条件,它必须执行操作。如果复选框为Y,则必须执行一个表单操作,如果未选中,则执行另一个操作。使用javascript,我检查了它是否被选中。但是我无法为此设置coldfusion变量。它总是覆盖变量。 下面是代码片段 这是使用的ColdFusion变量。这在默认情况下设置为YColdFusion变量设置不正确,coldfusion,Coldfusion,我有一个带有一些html元素的表单。它有一个默认选中的复选框。单击submit按钮,它将调用submitForm函数 根据复选框条件,它必须执行操作。如果复选框为Y,则必须执行一个表单操作,如果未选中,则执行另一个操作。使用javascript,我检查了它是否被选中。但是我无法为此设置coldfusion变量。它总是覆盖变量。 下面是代码片段 这是使用的ColdFusion变量。这在默认情况下设置为Y <cfset form_condn_var = 'Y'/> function
<cfset form_condn_var = 'Y'/>
function submitForm(){
if (document.getElementById('Show_Final_Model').checked)
{
form.Show_Final_Model.value = 'Y';
}
else{
<cfset form_condn_var = 'N'/>
}
}
<cfif '<cfoutput>#form_condn_var#</cfoutput>' eq 'Y'>
<form id="form1" action="test.cfm" method="POST" target="testmain">
<cfelse>
<form id="form1" action="<cfoutput>#something#</cfoutput>" method="POST" target="_blank" onSubmit="">
</cfif>
函数submitForm(){
if(document.getElementById('Show_Final_Model')。选中)
{
form.Show_Final_Model.value='Y';
}
否则{
}
}
它总是将变量form_condn_var设置为N,并且不管条件如何,它都会转到表单的else条件。但当我发出警报时,它的值是正确的。
我不能使用隐藏变量,因为表单最初没有被调用。根据选中的条件,仅访问它。
有人能告诉我为什么不管检查什么条件,表单的condn变量都会被覆盖。
或者我还有其他方法可以做到这一点吗
提前感谢短版 如果我正确理解了您的逻辑,那么您可以用以下
进而导致呈现以下HTML
function submitForm(){
if (document.getElementById('Show_Final_Model').checked)
{
form.Show_Final_Model.value = 'Y';
}
else{
}
}
<form id="form1" action="<cfoutput>#something#</cfoutput>" method="POST" target="_blank" onSubmit="">
函数submitForm(){
if(document.getElementById('Show_Final_Model')。选中)
{
form.Show_Final_Model.value='Y';
}
否则{
}
}
在您的示例中,我怀疑您删掉了一些逻辑,尽管如此,Javascript将以明文形式输出,因为它不在
标记中。如果您提交复选框,然后为下一个表单设置表单操作(表单2-选中复选框后),我想您要做的是:
<cfparam name="form.Show_Final_Model" default="N"/>
<cfif form.Show_Final_Model IS 'Y'>
<form id="form1" action="test.cfm" method="POST" target="testmain">
<cfelse>
<form id="form1" action="<cfoutput>#something#</cfoutput>"
method="POST" target="_blank" onSubmit="">
</cfif>
这将在处理程序页面上(提交表单后)。您不需要JS函数
但是,如果您试图根据复选框的选中或取消选中(换句话说,使用相同的表单)将表单的action param更改为其他内容,那么所有代码都需要是javascript,CF与此无关。设置2个变量-操作a和操作b,检查选中表单元素的值,并将form.action值更改为所需的值
但最重要的是,在您的头脑中确定什么是“服务器端”,什么是“客户端”。。这就是你犯错误的地方。祝你好运:)我不确定我是否正确理解了这个问题,但似乎完全可以在基于表单复选框值结果的条件处理的操作页面上处理这种情况。与其根据复选框的值将表单发送到两个不同的操作模板,不如根据复选框表单值的条件处理,在操作模板上相应地处理表单 显示form.Show_Final_Model是一个复选框,它不等于“Y”。如果已定义,则知道用户已选中该框就足够了。否则,浏览器将不会提交它。理论上可能有多个复选框具有相同的名称和不同的值,因此假设存在等于预期的响应是不保证的。尽管他的代码没有意义(JS/CF的混合),很明显,他只是用“Y”和“N”来表示是否已检查。然而,“N”是多余的,因为在示例中基本上用于计算if only。如果没有OP提供的进一步信息,很难给出更准确的答案,我已经尽了最大的努力。可以理解。你的答案很可能是他需要的。感谢您花时间进一步解释他在JS方面做错了什么。他显然需要一些指导。我已经读了好几遍了,你的问题仍然不清楚:)暂时忘掉代码吧。用通俗易懂的英语你的目标是什么?以下是我的观点:“我的表单有一个复选框。选中该复选框后,我想将表单提交到
somePage.cfm
,否则我想将其提交到someOtherPage.cfm
”。听起来对吗?在submitForm()函数中混合了JS逻辑和CFML。不能使用JS条件设置CF变量。
function submitForm(){
if (document.getElementById('Show_Final_Model').checked)
{
form.Show_Final_Model.value = 'Y';
}
else{
}
}
<form id="form1" action="<cfoutput>#something#</cfoutput>" method="POST" target="_blank" onSubmit="">
<cfparam name="form.Show_Final_Model" default="N"/>
<cfif form.Show_Final_Model IS 'Y'>
<form id="form1" action="test.cfm" method="POST" target="testmain">
<cfelse>
<form id="form1" action="<cfoutput>#something#</cfoutput>"
method="POST" target="_blank" onSubmit="">
</cfif>