目前分類:jQuery (5)

瀏覽方式: 標題列表 簡短摘要

簡單來說我是要透過固定格式的網址,運用span(display:none)放參數去組合出連結。

然後運用css的方式製作按鈕,html會很乾淨,連結透過jquery產生,css製作美觀按鈕。

 

html

                <dl>
                    <dt><a>點心</a></dt><span>01</span>
                    <dd class="four">&nbsp;</dd>
                    <dd class="sea">&nbsp;</dd>
                </dl>
                
                <dl>
                  <dt><a>點心試是<br />
                  試看試</a></dt><span>11</span>
                    <dd class="four">diamˋximˊ</dd>
                    <dd class="sea">diamˊsimˋ</dd>
                </dl>

 

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="javascript">
google.load("jquery", "1.6");

</script>
<script type="text/javascript">
 $(function(){
    
    var word_url = "upload/wma/talk/2011Dec/word/"; //單字路徑
    var dialogue_url = "upload/wma/talk/2011Dec/dialogue/"; //對話路徑
    var jsclick = "javascript:javascript:wav";
    
    
    // 單字-四縣腔
    $(".word .four").each(function (i) {
      $(this).prepend( "<a href=\""
        + jsclick + "('" + word_url + "four/" +
        $(this).parent().find("span").text() + ".wma')\" >" +
        "</a>"
      );
    });
    
    // 單字-海陸腔
    $(".word .sea").each(function (i) {
      $(this).prepend( "<a href=\""
        + jsclick + "('" + word_url + "sea/" +
        $(this).parent().find("span").text() + ".wma')\" >" +
        "</a>"
      );
    });

    // 對話
    $(".dialogue li").each(function (i) {
      var num = $(this).find("span").text();
      $(this).prepend(
        "<a class=\"four\" href=\"" + jsclick + "('" + dialogue_url + "four/" + num + ".wma')\" >" + "</a>" +
        "<a class=\"sea\"  href=\"" + jsclick + "('" + dialogue_url + "sea/" + num + ".wma')\" >" + "</a>"
        
      );
    });

    
      $(".word .four").click(function(){
      
        alert($(this).prev().find("span").text());
      
        });
 
  });

</script>

incode 發表在 痞客邦 留言(0) 人氣()

aColumns 就是資料庫欄位,此欄位順序對應到前台html區丟來的資料順序,所以必須跟sSearch對應。
此篇沒有使用排序功能,所以排序就沒差了。若要排序功能,則是在前台傳遞參數加上iSortCol_N的資料。

可以設定一組驗證值,否則無法直接觀看。放在一開始的if條件即可。

 

 

<?php
if(true){
//isset($_POST['ej']) or isset($_POST['post'])

    
    /* 排除sql注入 */
    
    foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }
    
    /*
     *
     *  識別字使用的慣用命名規則
     *
     *     a – array
     *    b – boolean
     *    f – float
     *    fn – function
     *    i – integer
     *    n – node (表格的一個節點)
     *    o – object
     *    s – string
     *  aa - Array of Array
     *     
        所需POST資料
        dis_st             =>         設定列出初始值
        dis_len         =>         設定列出範圍
        iSortCol_N         =>        0為判定(isset)是否排序,其餘為欄位量
        sSortCol_N         =>        欄位名稱
        sSearch         =>        搜尋字串(全欄位)
        bSearchable_N    =>        全欄位搜尋後的單欄位是否搜尋判斷
        sSearchable_N    =>        單欄位搜尋值
        
        
     */
    
    $aColumns = array( 'p_id','p_name','p_issn', 'p_eissn','p_link', 'p_range' );
    $aColumns_title = array( '','名稱','ISSN', 'EISSN','連結', '範圍' );
    
    //設定不出現
    
    
    $aHidden = array(0,4);
    if(isset($_POST['Sort'])){
        for ($i=0; $i<Count($aColumns);$i++){
          for($j=0; $j<Count($aHidden); $j++){
            if($aHidden[$j]==$i){continue;};
            if($_POST['Sort'][$i]!=""){
                $sSortable[$i] = $_POST['Sort'][$i];
            }
            
          }
        }
    }
    
    if(isset($_POST['Searchable'])){
        for ($i=0; $i<Count($aColumns);$i++){
            if($_POST['Searchable'][$i]!="" ){
                $sSearchable[$i] = $_POST['Searchable'][$i];
            }
        }
    }
    //$_POST['dis_st'] = 30;
    //$_POST['dis_len'] = 20;
    
    $_POST['sSearch'] = isset($_POST['sSearch'])?$_POST['sSearch']:"";
    $_POST['dis_st'] = isset($_POST['dis_st'])?$_POST['dis_st']:0;
    
    /* 接受值轉換 */
    $sql_option = array(
        "dis_st"    =>         $_POST['dis_st'],
        "dis_len"    =>         $_POST['dis_len'],
        "iSortingCols" =>    Count($aColumns),    
        "sSearch" =>    $_POST['sSearch'],    
    );
    
    
    
    
    
    
    /* Indexed column (used for fast and accurate table cardinality) */
    $sIndexColumn = $aColumns[0];
    
    

    /* 資料庫資訊 */
    $setSql['user']       = "root";
    $setSql['password']   = "";
    $setSql['db']         = "ej";
    $setSql['server']     = "localhost";
    
    /* 資料表 */
    $sTable = "ej_periodical";
    
    
    /*
     * MySQL 連線
     */
    $setSql['link'] =  mysql_pconnect( $setSql['server'], $setSql['user'], $setSql['password']  ) or
        die( '無法連線到伺服器' );
    
    mysql_select_db( $setSql['db'], $setSql['link'] ) or
        die( '無法選擇資料表 '. $setSql['db'] );
    
    
    /*
     * 頁數切換 dis_st起始  dis_len範圍
     */
    $sLimit = "";
    if ( isset( $sql_option['dis_st'] ) && $sql_option['dis_len'] != '-1' )
    {
        if($sql_option['dis_len'] !== 0){
        $sLimit = "LIMIT ".mysql_real_escape_string( $sql_option['dis_st'] ).", ".
            mysql_real_escape_string( $sql_option['dis_len'] );
        }
    }
    
    /*
     * Ordering 排序設定
     */
    $sOrder = "";
    if ( isset( $sql_option['iSortCol_0'] ) )
    {
        $sOrder = "ORDER BY  ";
        for ( $i=0 ; $i<intval( $sql_option['iSortingCols'] ) ; $i++ )
        {
            if ( isset($_POST['iSortCol_'.$i]) && $_POST['iSortCol_'.$i]!="")
            {
                $sOrder .= $aColumns[ intval( $_POST['iSortCol_'.$i] ) ]."
                     ".mysql_real_escape_string( $_POST['sSortDir_'.$i] ) .", ";
            }
        }
        
        //替換後方兩字,也就是替換", "為"",若沒有排序則將ORDER BY取消
        $sOrder = substr_replace( $sOrder, "", -2 );
        if ( $sOrder == "ORDER BY" )
        {
            $sOrder = "";
        }
        

    }
    
    
    
    
    
    /*
     * Filtering 全資料搜尋功能(過濾)
     */
    $sWhere = "";
    if ( $sql_option['sSearch'] != "" or $sql_option['sSearch'] != null)
    {
        $sWhere = "WHERE (";
        for ( $i=1 ; $i<count($aColumns) ; $i++ )//主鍵不搜尋
        {
            $sWhere .= $aColumns[$i]." LIKE '%".$sql_option['sSearch']."%' OR ";
        }
        //將最後三字元替換為"",也就是刪除"OR "
        $sWhere = substr_replace( $sWhere, "", -3 );
        $sWhere .= ')';
    }

    /*
     * Individual column filtering 單欄資料搜尋功能(過濾)
     */
    for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( isset($_POST['sSearch_'.$i]) &&  $_POST['sSearch_'.$i] != '' )
        {
            if ( $sWhere == "" )
            {
                $sWhere = "WHERE ";
            }
            else
            {
                $sWhere .= " AND ";
            }
            $sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_POST['sSearch_'.$i])."%' ";
        }
    }
    
    
    /*
     * SQL queries 執行SQL
     * 取得資料傳至$rResult
     */
    //這邊一樣是將最後一筆 , 拿掉,implode是將陣列組合為字串,str_replace是將符合的替換掉。
    $sQuery = "
        SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
        FROM   $sTable
        $sWhere
        $sOrder
        $sLimit
    ";
    
    
    
    $rResult = mysql_query( $sQuery, $setSql['link'] ) or die(mysql_error());
    
    
    /* Data set length after filtering
     * 設定在查詢(過濾)後的資料筆數
     */
    $sQuery = "
        SELECT FOUND_ROWS()
    ";
    $rResultFilterTotal = mysql_query( $sQuery, $setSql['link'] ) or die(mysql_error());
    $aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
    $iFilteredTotal = $aResultFilterTotal[0];
    
    /* 資料總筆數 */
    $sQuery = "
        SELECT COUNT(".$sIndexColumn.")
        FROM   $sTable
    ";
    $rResultTotal = mysql_query( $sQuery, $setSql['link'] ) or die(mysql_error());
    $aResultTotal = mysql_fetch_array($rResultTotal);
    $iTotal = $aResultTotal[0];
    
    /*
     * 輸出
     */
    $sOutput = '{';
    $sOutput .= '"dis_st": '.$_POST['dis_st'].', ';
    $sOutput .= '"dis_len": '.$_POST['dis_len'].', ';
    $sOutput .= '"iTotalRecords": '.$iTotal.', ';
    $sOutput .= '"iTotalRecords": '.$iTotal.', ';
    $sOutput .= '"iTotalDisplayRecords": '.$iFilteredTotal.', ';
    $sOutput .= '"aaData": [ ';
    while ( $aRow = mysql_fetch_array( $rResult ) )
    {
        $sOutput .= "[";
        for ( $i=0 ; $i<count($aColumns) ; $i++ )
        {

            if ( $aColumns[$i] != ' ' )
            {
                /* General output */
                $sOutput .= '"'.str_replace('"', '\"', $aRow[ $aColumns[$i] ]).'",';
            }
        }
        
        /*
         * Optional Configuration:
         * If you need to add any extra columns (add/edit/delete etc) to the table, that aren't in the
         * database - you can do it here
         */
        
        
        $sOutput = substr_replace( $sOutput, "", -1 );
        $sOutput .= "],";
    }
    $sOutput = substr_replace( $sOutput, "", -1 );
    $sOutput .= '] }';
    
    echo $sOutput;
    




}else{

echo "此頁面不能直接訪問!";

}


?>


 

文章標籤

incode 發表在 痞客邦 留言(0) 人氣()

ejajax就是觸發ajax的函數,所以上面無論是change、click、以及keyup都是用選擇符指定哪個物件透過什麼動作觸發ejajax的函式。

change用在下拉選單,而keyup或keydown就是在搜尋欄位每輸入一個字就觸發。

sSearch則是全欄位搜尋,其餘sSearch_1~ 5則是自訂多少欄位可以單獨搜尋。

而資料倒出則透過 $.each(aaData, function()  這函式進行組合。
最後決定輸出什麼資料就是在該區將json的資料篩出後組合出html。

當然也可以使用get傳遞,要改成get傳遞就是在組合送出的位址,那每次行為改變網址即可。

 

 


<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="javascript">
google.load("jquery", "1.4");
google.load("jqueryui", "1.5.2");
</script>



<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
    
        $("#per").change(function(){
            
            ejajax();
        
        })
        
        $("input.os").keyup(function(){
            
            ejajax();
        
        })
        
        $("a#first").click(
            function () {
            
                ejajax("first");
                
            }
        )
        
        $("a#last").click(
            function () {
            
                ejajax("last");
                
            }
        )
        
        $("a#next").click(
            function () {
            
                ejajax("+");
                
            }
        )
        
        $("a#prev").click(
            function () {
            
                ejajax("-");
                
            }
        )
    
        $("#sub").click(function(){
            $("tr").remove(".db_list");
            $("tr").remove(".s_list");
            
            ejajax();
    
        })
        
        $("#2page").click(function(){
            $("tr").remove(".db_list");
            $("tr").remove(".s_list");
            
            ejajax("to");
    
        })
    

    
    function ejajax(type){
    
    $("tr").remove(".db_list");
    $("tr").remove(".s_list");
    var sSearch = $("#sSearch").val();
    var sSearch_1 = $("#sSearch_1").val();
    var sSearch_2 = $("#sSearch_2").val();
    var sSearch_3 = $("#sSearch_3").val();
    var sSearch_4 = $("#sSearch_4").val();
    var sSearch_5 = $("#sSearch_5").val();
    
        switch(type){
            
          default:
           
            var dis_st = (parseInt($("#dis_st").val())<=0)?0:parseInt($("#dis_st").val());
            var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : $("#dis_st").val(),
            "dis_len" : $("#per").val()
            }
          break;
          
          case "+":
            //大為總數為總數
            var dis_st = (parseInt($("#dis_st").val()) + parseInt($("#per").val())>$("#total").text())?parseInt($("#dis_st").val()):parseInt($("#dis_st").val()) + parseInt($("#per").val());
            var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : dis_st,
            "dis_len" : $("#per").val()
            }
           break;
           
           
          case "-":
            //小於0仍為0
            var dis_st = ((parseInt($("#dis_st").val()) - parseInt($("#per").val()))<0)?0:parseInt($("#dis_st").val()) - parseInt($("#per").val());
            var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : dis_st,
            "dis_len" : $("#per").val()
            }
           
          break;
          
          case "first":
            //小於0仍為0
            var dis_st = 0;
            var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : dis_st,
            "dis_len" : $("#per").val()
            }
           
          break;
          
          case "last":
            //小於0仍為0
            var a1 = parseInt($("#total_page").text());
            var a2 = $("#per").val();
            
            var dis_st = (a1*a2)-a2;
            
            
           var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : dis_st,
            "dis_len" : $("#per").val()
            }
           
          break;
          
          case "to":
            
            
            var a1 = $("#per").val();
            var a2 = ($("#goto").val()>parseInt($("#total_page").text()))?parseInt($("#total_page").text()):$("#goto").val();
            var dis_st = a1*a2-a1;
            
            $("#dis_st").val(dis_st);
            
            
            
           var data = {
            "sSearch": sSearch,
            "sSearch_1" : sSearch_1,
            "sSearch_2" : sSearch_2,
            "sSearch_3" : sSearch_3,
            "sSearch_4" : sSearch_4,
            "sSearch_5" : sSearch_5,
            "dis_st" : dis_st,
            "dis_len" : $("#per").val()
            }
           
          break;
          
          
        };
    
 
        
        
    
        $("#loading").fadeIn("slow");

            $.ajax({
                url: "ejquery.php",
                data:data,
                type: "POST",
                dataType: "json",
                success: function(Ddata) {
                    
                    
                    var i = 0;
                    
                    var total = Ddata["iTotalRecords"];
                    var total = Ddata["iTotalDisplayRecords"];
                    var aaData = Ddata["aaData"];
                    
                    $.each(aaData, function() {
                    $("#test").append("<tr class=\"s_list\">" +
                    "<td>" + (i+1) + "-" + aaData[i][0] + "</td>" +
                    "<td> <a target=\"_blank\" href=\"" + aaData[i][4] + "\">" + aaData[i][1] + "</a></td>" +
                    "<td>" + aaData[i][2] + "</td>" +
                    "<td>" + aaData[i][3] + "</td>" +
                    "<td>" + aaData[i][5] + "</td>" +
                    "</tr>");
                i++;
                });
                
                $("#dis_st").val(dis_st);
                $("#total").text(total);
                var p = Math.ceil(total / $("#per").val());
                var per = parseInt($("#per").val());
                var st = parseInt($("#dis_st").val());
                var page = Math.ceil(st / per)+1;
                
                $("#total").text(total);
                $("#page").text(page);
                $("#total_page").text(p);
                
                
            },
            
                Error: function() {
                    alert("ERROR!!!");
                }
            });
            $("#loading").ajaxStart(function(){
            $(this).fadeIn("slow");}
            ).ajaxStop(function(){
            $(this).fadeOut("slow");
            });
            
            
        }//end function
        
    })
</script>
<body>



<p>&nbsp;</p>
<div id="loading" style="display:none" >載入中....</div>
<table cellspacing="0" cellpadding="0" id="test">
  <tr bgcolor="#FFE9C8" height="24">
    <td><select name="select" id="per">
      <option value="10">顯示10筆</option>
      <option value="30">顯示30筆</option>
      <option value="50">顯示50筆</option>
      <option value="100">顯示100筆</option>
    </select></td>
    <td><input name="sSearch_1" type="text" id="sSearch_1" class="os"/></td>
    <td><input name="sSearch_2" type="text" id="sSearch_2" class="os"/></td>
    <td><input name="sSearch_3" type="text" id="sSearch_3" class="os"/></td>
    <td><input name="sSearch_5" type="text" id="sSearch_5" class="os"/></td>
  </tr>
  <tr bgcolor="#FFE9C8" height="24">
    <td width="10%">欄位一</td>
    <td width="40%">欄位二</td>
    <td width="20%">欄位三</td>
    <td width="20%">欄位四</td>
    <td width="10%">欄位五</td>
  </tr>
 
  <tr bgcolor="#FFFFFF" height="24">
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
<input id="sSearch" name="sSearch" size="30" type="text" value="" />
<input id="sub" type="submit" name="Submit" value="送出" />

    <tr bgcolor="#FFFFFF" height="24">
    <td colspan="5">查無資料!</td>
  </tr>
</table>

<input name="tt_str" size="10" type="hidden" value="" />
<input name="dis_st" id="dis_st" size="10" type="hidden" value="0" />
<a id="first" href="#">最前頁</a>|
<a id="prev" href="#">上一頁</a>|
<a id="next" href="#">下一頁</a>|
<a id="last" href="#">最後一頁</a>,目前在第<a id="page" href="#"></a>頁/共<a id="total_page" href="#"></a>頁,總筆數:<a id="total"></a>

 前往<input id="goto" name="goto" size="2" type="text" value="" /> 頁 <input id="2page" type="submit" name="2page" value="前往" />
 <input name="post" size="10" type="hidden" value="" />


文章標籤

incode 發表在 痞客邦 留言(0) 人氣()

利用jQuery的serialize來取得所有 input的type=’text’值

$("input[@type=text]").serialize(); <= 此為 1.3版本以前的寫法
$("input[type=text]").serialize(); <= 1.3版本後的寫法

用這組合網址拿去ajax用輕鬆很多,不用再一個個判斷,剩下的當空即可。


//這個好像是autocomplete用的
$(".owner").result(function(event, data, formatted) {
        var dr_name = $(this).parent().next().find(">:input");
        dr_name.val( (dr_name.val() ? dr_name.val() + ";" : dr_name.val()) + data[2]);
        var dr_did = $(this).parent().find(":input").eq(1);
        dr_did.val(data[1]);

            
    })

 


//用來計算總計,當blur就在一個位置算總值
<script type="text/javascript">
$().ready(function() {

    //總計
    function ins_count ()
    {
        var casualty,property,employer,total = 0;
        casualty = parseInt($('#is_any_pr_casualty').val());
        property = parseInt($('#is_any_pr_property').val());
        employer = parseInt($('#is_any_pr_employer').val());
        

        total = casualty + property + employer;
        total = parseInt(total);
        $('#is_any_total_pr').val(total);
            
    };
        
    $("#count_ins").click(function(){
            ins_count ();
    });  
    
    $("#is_any_pr_casualty, #is_any_pr_property, #is_any_pr_employer").blur(function(){
        ins_count ();
    
    });
    
    
    
});
</script>

 


//用來計算民國加一年(此格日期輸入後blur另一格就算出下一年)

<script type="text/javascript">
$().ready(function() {

   
    //---日期加一年----   
    $("#is_sta").blur(function(){
       
        var check = $(this).val().substr(0,1);
        if (check == 9)
        {
        var thisyear = $(this).val().substr(0,2);
        var thismd = $(this).val().substr(2,4);
        }else{
       
        var thisyear = $(this).val().substr(0,3);
        var thismd = $(this).val().substr(3,4);
        }
        thisyear = Number(thisyear);
        nextyear = thisyear + 1;
        //String
        $("#is_end").val(nextyear + thismd)
       
       
    }); 
   

});

</script>

 


 

 

 

Autocomplete

incode 發表在 痞客邦 留言(0) 人氣()

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js"></script>  

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="javascript">
google.load("jquery", "1.2");
google.load("jqueryui", "1.5.2"); // 不用 jQuery UI 可以不用此行
</script>

<script type="text/javascript">    
     $(function() {    
         你的程式碼
   });    
</script>

incode 發表在 痞客邦 留言(0) 人氣()