首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止对隐藏字段进行spry验证

防止对隐藏字段进行spry验证
EN

Stack Overflow用户
提问于 2013-01-26 21:09:35
回答 1查看 570关注 0票数 0

我有一个表单与spry验证应用于一些元素。

在这个表单上还有一个下拉列表,它根据选择的内容隐藏某些元素。

最初spry验证代码位于页面底部,但表单被阻止提交,因为用于验证的表单域不再存在。我从以下几个方面开始:

代码语言:javascript
复制
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);
    });

在我页面的底部

代码语言:javascript
复制
<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>

我试着把它移到我的函数中,但它仍然不起作用,我猜是因为它只有函数的作用域吧?

代码语言:javascript
复制
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

我已经将我的代码更改为:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2013-01-26 22:09:47

现在工作,只是需要一些错误检查代码在那里...

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14537251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档