【问题标题】:Disable input after submit and count array element提交和计数数组元素后禁用输入
【发布时间】:2013-12-26 02:22:40
【问题描述】:
function limitofTags(){

    var tags = $('div').find('.tag').map(function(){
        return $(this).text();
    }).get();

    var elem = [];
    for (var i = 0; i < tags.length; ++i){
        //store array elements
        elem.push(tags[i]);

        if(elem.length < 2){
            $("#tags").prop('disabled',false);

        }
        else{
            $("#tags").prop('disabled',true);

        }
    }
}

对于html,它是带有按钮的小div。当我在输入文本字段中键入标签时,它将附加到 div 区域。当标签超过 2 个时,将禁用输入文本字段以防止添加更多标签。提交表单后,div 显示相同数量的标签,但输入文本字段不会保持禁用状态。那么,如果 div 中的标签超过 2,如何使输入文本字段保持禁用状态?

感谢您的见解或帮助。我一直在寻找在线答案,但似乎没有找到我需要的内容,提交后禁用输入文本。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可能应该在填充数组后检查长度,并且您正在创建一个与您拥有的 tags 数组完全相同的 elem 数组:

    function limitofTags(){
        var tags = $('div').find('.tag').map(function(){
            return $(this).text();
        }).get();
    
        $("#tags").prop('disabled', tags.length >= 2);
    }
    

    【讨论】:

    • 哦,我明白了。它更容易。但是当我在创建页面上添加标签并显示输入禁用时,提交后,在编辑页面上,输入不会保持禁用状态。所以如果我再添加一个标签,它将被禁用,它将是 3 个标签,而不是假设的 2 个标签。为什么?
    • 提交后,页面重新加载,所有用javascript设置或完成的东西都丢失了,因为没有状态的概念,这一切都在新的页面加载时重新开始。
    • 我明白了,有没有办法在提交后保持禁用状态?
    • Cookies、localstorage,或者如果您正在提交表单,请添加一些您可以在服务器端使用的内容,以便在下一页设置禁用状态。
    • 我不熟悉 cookie。服务器端 - grails,我还在学习。好的,我会调查一下,看看我能不能让它工作。如果没有,我会再次寻求帮助。感谢并感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多