我有一个表单与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 validation prevents the form submission on unavailable fields
我已经将我的代码更改为:
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
发布于 2013-01-26 22:09:47
现在工作,只是需要一些错误检查代码在那里...
<script type="text/javascript">
$(document).ready(function() {
var isHidden = false;
function clearValidation(){
slug_sec_Spry.reset();
slug_sec_Spry.destroy();
$('.slugDiv').hide();
isHidden = true;
}
function reapplyValidation(){
$('.slugDiv').show();
slug_sec_Spry = new Spry.Widget.ValidationTextField("slug_sec_Spry", "none",{validateOn:["blur"], characterMasking: /^[a-z0-9-]+$/, useCharacterMasking:true});
isHidden = false;
}
function checkPageType(myType){
switch (myType) {
case 'Standard Page':
if(isHidden == true){
reapplyValidation();
}
break;
case 'Borough Menu':
if(isHidden == false){
clearValidation()
}
break;
case 'Area Menu':
if(isHidden == false){
clearValidation()
}
case 'Forms Menu':
if(isHidden == false){
clearValidation()
}
break;
}
}
$('#idptp_sec').change(function() {
var myVal = $(this).val();
checkPageType(myVal);
});
//perform initial check
var initVal = $('#idptp_sec').val();
checkPageType(initVal);
});
</script>https://stackoverflow.com/questions/14537251
复制相似问题