Javascript Onclick函数不适用于CFINPUT验证
我试图使用CFINPUT验证字段,然后调用弹出窗口函数在提交表单之前做更多的工作,但它不起作用。onclick函数似乎先于CFINPUT验证。只要我点击提交按钮,它就会首先调用弹出窗口函数,而不会验证字段。我需要它:Javascript Onclick函数不适用于CFINPUT验证,javascript,forms,coldfusion,cfform,cfinput,Javascript,Forms,Coldfusion,Cfform,Cfinput,我试图使用CFINPUT验证字段,然后调用弹出窗口函数在提交表单之前做更多的工作,但它不起作用。onclick函数似乎先于CFINPUT验证。只要我点击提交按钮,它就会首先调用弹出窗口函数,而不会验证字段。我需要它: 首先验证字段 调用弹出函数 然后在弹出窗口自行关闭后提交表单 (注:我在这里看到了其他类似案例,但没有给出答案) 代码如下所示: <cfform action="register.cfm" method="post"> <cfinput t
<cfform action="register.cfm" method="post">
<cfinput type="text" name="username" size="50" maxlength="100" required="yes" autofocus="on" validate="noblanks">
<cfinput type="text" name="address" size="50" maxlength="100" required="yes" validate="noblanks">
....
<input type="submit" value=" Send " onclick="popup()">
....
....
....
请帮忙。谢谢。您尝试执行的cfinput验证是客户端等效的
<cfif len(trim(string)) gt 0>
(编辑:这并不意味着您应该完全依赖客户端验证。客户端验证更像是帮助访问者的一项功能。服务器端验证仍然很重要。)
我不得不说,这是非常弱的验证。任何包含至少1个非空白字符的内容都将通过测试。人们将能够拥有像“!”这样的用户名,这不是狂热的,但这只是一些信息
在上,它们显示了一个示例表单(以及的链接)
请提供您的姓名、电子邮件地址(不会公布)和评论
名称(必填,至少2个字符)
电子邮件(必填)
URL(可选)
您的评论(必填)
$(“#commentForm”).validate();
这个非常基本的示例展示了安装验证的简单性,以及一个简单的验证格式
<input name="ele" type="text" required>
与您尝试的验证级别完全相同。因此,首先,您几乎可以复制和粘贴代码。(除了可以提出的不同要求外,设置minlength需要一定数量的字符,并且要求至少有一个字符不是空白)
jQueryValidate可以得到相当广泛的应用,但是基本上很容易安装,一旦您熟悉了,就可以根据需要定制类
最后一点,不要忽视对CFForm元素的蔑视。似乎其他人忽视了你的问题,但事实并非如此
老实说,他们是在互联网生活的另一个时期开始出现的,但与他们一起工作总是有点挑剔。在许多人看来,对它们的扩展并没有做得很好,而且经常会激怒缺陷
能够说
是非常吸引人的,但是标签会成为一个麻烦,你不容易对它们进行你想要的精细控制。他们是拐杖,而且是生锈的拐杖
您可能会查看或查看这篇文章,以获得一些很好的见解和示例。这是一篇很老的博客文章,因此不确定今天的内容有多准确,但它展示了如何通过&CF\u checkTaskForm()函数运行CFFORM验证。因此,如果您通过
将表单提交更改为按钮,然后更改弹出函数,首先通过_CF_checkTaskForm()验证表单,如果通过,则继续执行您正在执行的其他JS
为了扩展这一点,我刚刚查看了CF8和CF11的安装,其中的功能似乎是_CF_checkCFForm_1如果使用该版本的CF,那么类似这样的内容应该会让您走上正确的方向:
<script>
popup = function(formreference) {
var check = _CF_checkCFForm_1(formreference);
if (!check) {
//if the rules failed then do not submit the form
return false;
} else {
// Do the popup
}
}
</script>
<cfform action="register.cfm" method="post">
<cfinput type="text" name="username" size="50" maxlength="100" required="yes" autofocus="on" validate="noblanks">
<cfinput type="text" name="address" size="50" maxlength="100" required="yes" validate="noblanks">
<input type="button" value=" Send " onclick="popup(this.form)" />
</cfform>
弹出=函数(formreference){
var check=_CF_checkCFForm_1(formreference);
如果(!检查){
//如果规则失败,则不要提交表格
返回false;
}否则{
//打开弹出窗口
}
}
为什么不直接提交到弹出窗口中调用的页面?停止使用cfform
和cfinput
,分别使用form
和input
。ColdFusion UI功能的实现很差,这会让你头疼。Scott完全正确,cfform元素麻烦多于帮助。Dan不确定你的意思。你能再解释一下吗?弹出窗口和注册页面做不同的事情@ScottStroz和cfqueryparam,我看到人们在使用它,但我如何使用它来实现我想要实现的目标?我对jQuery一无所知。如果有人能显示一个代码来做这件事,这将有很大帮助。谢谢。如果你找不到足够的链接,我不确定我能想出的任何例子都能帮助你。
<script>
popup = function(formreference) {
var check = _CF_checkCFForm_1(formreference);
if (!check) {
//if the rules failed then do not submit the form
return false;
} else {
// Do the popup
}
}
</script>
<cfform action="register.cfm" method="post">
<cfinput type="text" name="username" size="50" maxlength="100" required="yes" autofocus="on" validate="noblanks">
<cfinput type="text" name="address" size="50" maxlength="100" required="yes" validate="noblanks">
<input type="button" value=" Send " onclick="popup(this.form)" />
</cfform>