jQuery 플러그 인 55 번 째: 대량 획득 값 을 JSon 문자열 로 되 돌려 줍 니 다.

9512 단어
각종 폼 요 소 를 etext () 라 는 방법 으로 값 을 얻 고 하나의 입력 상자 로 '[value]' 를 되 돌려 줍 니 다.여러 입력 상자 에서 동시에 값 을 추출 하면 자동 으로 JSon 형식 문자열 을 되 돌려 줍 니 다.체크 상자 의 여러 선택 항목 의 값 은 "," 간격 을 사용 합 니 다.하위 노드 가 없고 문자 내용 만 있 는 span 과 div 값 입 니 다.라벨 을 잘 모 르 는 상태 에서 유용 하 다.예 를 들 어 상품 주문 서 를 추가 하 는 페이지 에 서 는 상품 명세서 에 데이터 줄 선택 기 를 설정 하여 json 문자열 처 리 를 하고 주문 의 다른 데이터 와 함께 백 엔 드 에 제출 할 수 있 습 니 다.
/*
* jQuery etext plugin 0.2
*
* Copyright (c) 2015 chinet_bridge
*
*        Json      0.2 
*
*/

//Json      
var Obj2str = function (o) {
    if (o == undefined) {
        return "";
    }
    var r = [];
    if (typeof o == "string") return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(
)/g, "\
").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\""; if (typeof o == "object") { if (!o.sort) { for (var i in o) r.push("\"" + i + "\":" + Obj2str(o[i])); if (!!document.all && !/^
?function\s*toString\(\)\s*\{
?\s*\[native code\]
?\s*\}
?\s*$/.test(o.toString)) { r.push("toString:" + o.toString.toString()); } r = "{" + r.join() + "}" } else { for (var i = 0; i < o.length; i++) { r.push(Obj2str(o[i])); } r = "[" + r.join() + "]"; } return r; } return o.toString().replace(/\"\:/g, '":""'); } ; (function (d, b) { d.fn.etext= function(options){ var defaults={ rowSelector:null}; var opts = d.extend({},defaults, options); 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{ var builder = function(row){ var jo={}; row.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()):""; jo[m.attr("name")]=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=row.find(':checkbox[name='+m.attr('name')+']:checked').length; chkboxlen--; } if(chkboxlen==0){ l =(l+',').replace(',,',''); jo[m.attr("name")]=l; } }else if(m.is(":input")){ chkboxname=''; l = m.val(); l = d.trim(l); jo[m.attr("name")]=l; }else if(m.is(":isText")){ chkboxname='';l = m.text();l = d.trim(l); jo[m.attr("name")]=l; } }); // push json , , n[n.length] = Obj2str(jo); } if(opts.rowSelector==null){ builder(k); }else{ k.find(opts.rowSelector).each(function(){ var _k=$(this); builder(_k); }); } } return "["+n.join()+"]"; } })(jQuery);

 다음은 호출 예 입 니 다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="jquery.etext.js"></script>
</head>
<body>
    <form id="form1">
    <div id="div1" >
        <input type="text" id="Text1" name="Text1" />
        <input type="text" id="Text11" name="Text11" />
        <input type="text" id="Text2" name="Text2" />
        <input type="radio" id="Radio1" name="Text5" value="1" />
        YES
        <input type="radio" id="Radio2" name="Text5" value="2" />
        No
        <input type="checkbox" id="chkbox1" name="Chkbox" value=" " />
         
        <input type="checkbox" id="chkbox2" name="Chkbox" value=" " />
          <span id="ufo" name="UFO">4242</span>
    </div>
    <div id="div2">
        <input type="text" id="Text3" name="Text1" />
        <input type="text" id="Text4" name="Text11" />
        <input type="text" id="Text5" name="Text2" />
        <input type="radio" id="Radio3" name="Text5" value="1" />
        YES
        <input type="radio" id="Radio4" name="Text5" value="2" />
        No
        <input type="checkbox" id="Checkbox1" name="Chkbox" value=" " />
         
        <input type="checkbox" id="Checkbox2" name="Chkbox" value=" " />
          <span id="Span1" name="UFO">4242</span>
    </div>
    </form>
    <input type="button" id="submit" value="   " />
    <script language="javascript">


        $("#submit").click(function () {
            var json = $("#form1").etext({ rowSelector: "div" });
            alert(json);
        });        

    </script>
</body>
</html>

좋은 웹페이지 즐겨찾기