• 较为完善的限定字数评论框效果


    较为完善的限定字数评论框效果,首先看看效果,如下图:

    测试目标:

    1.输入框随着输入文本字符数高度自适应;

    2.类似微博输入框,限定字数位140字(280字节),超出则不能再继续输入;

    好,带着这两个目标开始项目,基本是百度加自己研究,大神请绕道

    //计算字节数
    function bytes(str) {
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            if (str.charCodeAt(i) > 127) {
                len++;
            };
            len++;
        };
        return len;
    };
    
    //根据pLen参数,截取字节数
    function autoAddEllipsis(pStr, pLen) {
    	var otext= pStr
    	var len1=0;
    	for (var i = 0; i < otext.length; i++) {
            if (otext.charCodeAt(i) > 127) {
                ++len1;
            };
            ++len1;
    		if(len1>=pLen){
    			return otext.substring(0,i+1);
    		};
        };
    
    };
    
    
    function textarea_h(){
    //评论框高度自适应 start
    	var text = document.getElementById("comments-show"); 
    	var shadow = document.getElementById("comments-hide");
    	var otop=$('.channel-nav').offset().top-46;
    	text.oninput = text.onpropertychange = onchange;
    	function onchange() {
    		shadow.value = text.value+'0000';
    		setHeight();
    		setTimeout(setHeight, 0);
    		function setHeight() { text.style.height = shadow.scrollHeight + "px"; }
    	};
    //评论框高度自适应 end
    
    	$("#comments-show").keyup(function() {
    		var qbyte = bytes($.trim($(this).val()));
    		var limit = 280 - qbyte;
    		console.log(limit)
    		if(limit<=0){
    		    limit=0;
    		};
    		if (limit % 2 == 0) {
    			$(".com-left b").html((limit / 2));
    		} else {
    			$(".com-left b").html(((limit + 1) / 2));
    		};
    		
    		if(qbyte>=280){
    			$(".com-left b").css('color','#f00');
    			$('#comments-show, #comments-hide').val(autoAddEllipsis($.trim($(this).val()),280));
    		}else{
    			$(".com-left b").css('color','#999');
    		}
    	});
    	$("#comments-show").focus(function(){
    	    $(document).scrollTop(otop);
    		$(this).css('border','1px solid #fca6b3');
    		$('.comments-btn-wrap').show();
    	});
    
    	$('.com-right .cancel').click(function(){
    		$("#comments-show,#comments-hide").val("").height('20px').css('border','1px solid #ccc');
    		$(".com-left b").html(140);
    		$('.comments-btn-wrap').hide();
    	});
    };
    if($('.comments').length>0){
    	textarea_h();
    };
    

      

     ok,至此,目标基本达到,前端菜鸟,js写的很烂,谅解。。。

  • 相关阅读:
    Java多线程实现方式Callable和线程池
    tomcat8 url包含|等特殊字符报错400的问题
    Advanced-REST-client 获取及安装
    RSA公钥加密私钥解密
    js 调用exe文件
    简单的springboot全局异常处理
    在Controller中添加事务管理
    干货:排名前16的Java工具类
    将html版API文档转换成chm格式的API文档
    eclipse如何为java项目生成API文档
  • 原文地址:https://www.cnblogs.com/cainiaoz/p/5508867.html
Copyright © 2020-2023  润新知