【发布时间】:2015-08-13 11:42:29
【问题描述】:
我在这个论坛上搜索了很多来解决我遇到的这个问题,但到目前为止还没有成功。我有一个包含几个<input> 部分的表格。在此表单中,我有一个密码字段和一个确认密码字段,需要使用第一个密码进行验证。这是 HTML 代码示例:
<input
title="Password should contain at least 6 characters or numbers" type="password"
pattern=".{6,}"
name="RegisterForm[password]"
onchange="this.setCustomValidity(this.validity.patternMismatch ? this.title : ''); if(this.checkValidity()) form.RegisterForm[password2].pattern = this.value;"
placeholder="Password..."/>
<input
title="Please enter the same Password as above"
type="password"
pattern=".{6,}"
name="RegisterForm[password2]"
onchange="this.setCustomValidity(this.validity.patternMismatch ? this.title : '');"
placeholder="Confirm Password . . ."/>
两个输入都有一个带方括号的名称,例如"RegisterForm[password]"。如果我使用不带括号的名称属性,则验证有效,如果我将其与括号一起使用,则验证不起作用。任何想法如何克服名称属性中的方括号问题而不会丢失方括号?
如果我将名称属性替换为"password1" 和"password2",那么一切都会按预期进行。
如果有人有解决方案,请帮助我! :-)。
【问题讨论】:
-
您的 javascript 中有错误:
form.RegisterForm.[password2].pattern无效。如果您能提供更多代码,我可以提供帮助,目前尚不清楚form对象的来源。 -
非常感谢您的帮助。我提供了更多代码,确实也注意到了错误(Registerform.[password2] 之间有一个 .,但问题仍然存在。
-
嘿,你贴了很多没用的HTML,如果我不清楚,对不起:我很好奇
form.RegisterForm:你自己构建这个对象吗?问题是form.RegisterForm.[password2].pattern将尝试访问由variablepassword2定义的RegisterForm对象的某些属性,我相信在您的情况下这将评估为form.RegisterForm.[undefined]。顺便说一句,浏览器控制台中是否有任何错误? -
还有什么原因要在名称属性中保留方括号?
-
是的,你是对的,代码太多了。我一会儿再调整一下。我使用方括号的原因是因为我还使用了 yii 框架,它为我提供了完整的表单验证。我不打算把它去掉,但仔细想想,实际上最好不要使用两种不同的验证方式。
标签: javascript html validation input attributes