我有一个对某些元素应用了 spry 验证的表单。
在此表单上还有一个下拉菜单,根据所选内容隐藏某些元素。
最初,spry 验证代码位于页面底部,但由于验证的表单字段不再存在,因此无法提交表单。我从以下内容开始:
function checkPageType(myType){
switch (myType) {
case 'Standard Page':
$('.slugDiv').show();
break;
case 'Borough Menu':
$('.slugDiv').hide();
break;
case 'Area Menu':
$('.slugDiv').hide();
case 'Forms Menu':
$('.slugDiv').hide();
break;
}
}
$('#idptp_sec').change(function() {
var myVal = $(this).val();
checkPageType(myVal);
});
在我的页面底部
<script type = "text/Javascript">
var slug_sec_Spry = new Spry.Widget.ValidationTextField("slug_sec_Spry", "none",{validateOn:["blur"], characterMasking: /^[a-z0-9-]+$/, useCharacterMasking:true});
</script>
我已经尝试将它移到我的函数中,但它仍然不起作用,我猜是因为它可能只有函数范围内吗?
function checkPageType(myType){
switch (myType) {
case 'Standard Page':
$('.slugDiv').show();
var slug_sec_Spry = new Spry.Widget.ValidationTextField("slug_sec_Spry", "none",{validateOn:["blur"], characterMasking: /^[a-z0-9-]+$/, useCharacterMasking:true});
break;
case 'Borough Menu':
$('.slugDiv').hide();
slug_sec_Spry.destroy();
slug_sec_Spry= null;
break;
case 'Area Menu':
$('.slugDiv').hide();
slug_sec_Spry.destroy();
slug_sec_Spry= null;
case 'Forms Menu':
$('.slugDiv').hide();
slug_sec_Spry.destroy();
slug_sec_Spry= null;
break;
}
}
$('#idptp_sec').change(function() {
var myVal = $(this).val();
checkPageType(myVal);
});
那么,如果该字段在页面加载后被隐藏,我该如何防止该字段被验证?
更新:
我一直在尝试在此处找到的其他解决方案: Spry 验证防止在不可用字段上提交表单
我已将代码更改为:
var slug_sec_Spry = Spry.Widget.ValidationTextField("slug_sec_Spry", "none",{validateOn:["blur"],characterMasking: /^[a-z0-9-]+$/, useCharacterMasking:true});
function clearValidation(){
if(slug_sec_Spry){
slug_sec_Spry.reset();
slug_sec_Spry.destroy()
}
}
function reapplyValidation(){
slug_sec_Spry = new Spry.Widget.ValidationTextField("slug_sec_Spry", "none",{validateOn:["blur"],characterMasking: /^[a-z0-9-]+$/, useCharacterMasking:true});
}
function checkPageType(myType){
switch (myType) {
case 'Standard Page':
$('.slugDiv').show();
reapplyValidation()
break;
case 'Borough Menu':
$('.slugDiv').hide();
clearValidation()
break;
case 'Area Menu':
$('.slugDiv').hide();
clearValidation()
case 'Forms Menu':
$('.slugDiv').hide();
clearValidation()
break;
}
}
$('#idptp_sec').change(function() {
var myVal = $(this).val();
checkPageType(myVal);
});
但它们会产生 TypeError:this.isBrowserSupported is not a function