jQuery 플러그인 54: 대량 획득 값 차이 없음

4450 단어
각종 폼 요소에 대해 etext () 방법을 통일적으로 사용해서 그 값을 얻습니다. 예를 들어 여러 개의 입력 상자에서 동시에 값을 얻으면 자동으로'|'간격으로 문자열로 되돌아옵니다.확인란의 여러 선택 항목에 대한 값은 ","간격으로 표시됩니다.심지어 하위 노드가 없고 문자 내용만 있는span과div에 대한 값도 얻는다.라벨을 잘 모르는 상황에서 유용하다.
; (function (d, b) { 
    d.fn.etext= function(){
            var l, k = this,n=[],chkboxname,chkboxlen;           
            d.extend(d.expr[ ":" ], {
	            isText: function( k ) {
		            return d(k).text() != "" && d(k).html().indexOf('>')==-1;
	            }
            });
            if(k.is(":input,:isText")){
                    k.each(function(){
                        var m = d(this);
                        if (m.is(":radio")) {
                            chkboxname='';
                            if(!m.is(":checked")){return true; }  
                            l = m.is(":checked")?d.trim(m.val()):"";                    
                            n.push(l);
                        }else if (m.is(":checkbox")) {     
                            if(!m.is(":checked")){return true; }                                   
                            if(chkboxname==m.attr('name')) {                                                 
                                l += m.is(":checked")?d.trim(m.val())+ ",":"";
                                chkboxlen--;     
                            }else{                     
                                l = m.is(":checked")?d.trim(m.val())+ ",":"";
                                chkboxname=m.attr('name');
                                chkboxlen=d(':checkbox[name='+m.attr('name')+']:checked').length;
                                chkboxlen--;
                            }
                            if(chkboxlen==0){                        
                                l =(l+',').replace(',,',''); n.push(l);  
                            }
                        }else if(m.is(":input")){
                            chkboxname='';        
                            l = m.val();l = d.trim(l); n.push(l);
                        }else if(m.is(":isText")){
                            chkboxname='';l = m.text();l = d.trim(l); n.push(l);
                        }                                      
                    });
            }else{
                k.find(":input,div,span").each(function(){
                    var m = d(this);
                    if (m.is(":radio")) {
                        chkboxname='';
                        if(!m.is(":checked")){return true; }  
                        l = m.is(":checked")?d.trim(m.val()):"";                    
                        n.push(l);
                    }else if (m.is(":checkbox")) {     
                        if(!m.is(":checked")){return true; }                                   
                        if(chkboxname==m.attr('name')) {                                                 
                            l += m.is(":checked")?d.trim(m.val())+ ",":"";
                            chkboxlen--;     
                        }else{                     
                            l = m.is(":checked")?d.trim(m.val())+ ",":"";
                            chkboxname=m.attr('name');
                            chkboxlen=d(':checkbox[name='+m.attr('name')+']:checked').length;
                            chkboxlen--;
                        }
                        if(chkboxlen==0){                        
                            l =(l+',').replace(',,',''); n.push(l);  
                        }
                    }else if(m.is(":input")){
                        chkboxname='';        
                        l = m.val();l = d.trim(l); n.push(l);
                    }else if(m.is(":isText")){
                        chkboxname='';l = m.text();l = d.trim(l); n.push(l);
                    }                                      
                });
            }            
            return n.length==1?n[0]:n.join('|');
    }
})(jQuery);

좋은 웹페이지 즐겨찾기