JQuery操作實現增刪改查的詳細介紹


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            a{
                text-decoration: none;
                cursor: pointer;
                color: palevioletred;
            }
        </style>
    </head>
    <body>
        <a href="javascript:addUser();">添加用戶</a>
        <input type="text" id="findInp"/>
        <a id="findUser">查找用戶</a>
        <table border="1" cellspacing="0" cellpadding="3">
            <tr>
                <th>ID</th>
                <th>用戶名</th>
                <th>密碼</th>
                <th>操作</th>
            </tr>
            <tr>
                <td>1001</td>
                <td>張三</td>
                <td>123asd</td>
                <td>
                    <a id="up">更新</a>
                    <a id="del">刪除</a>
                    <a class="up">上移</a>
                    <a class="down">下移</a>
                </td>
            </tr>
            <tr>
                <td>1002</td>
                <td>李四</td>
                <td>456zxc</td>
                <td>
                    <a id="up">更新</a>
                    <a id="del">刪除</a>
                    <a class="up">上移</a>
                    <a class="down">下移</a>
                </td>
            </tr>
        </table>
        <div id="addUser" style="display: none;">
            <form>
                ID:(只能是數字) <br />
                <input type="number" id="uid"/><br />
                用戶名:(只能是漢字) <br />
                <input type="text" id="user"/><br />
                密碼:(英文+數字或下划線,長度不小於6) <br />
                <input type="text" id="pwd"/><br />
                <a id="btn-add">提交</a>
                <a id="btn-update">更新</a>
                <a id="cancel">取消</a>
            </form>
        </div>
        <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/prac1.js" type="text/javascript" charset="utf-8"></script>
    </body>
</html>
//刪除當前行
//用事件委托實現,否則點擊一次后會失效
$('table').on('click','#del',function(){
    $(this).parents('tr').remove();
    //$(this).parent().parent().remove(); 同上
    //parent() parents()的區別就是前者獲取的只有它的上一級元素
    //后者把它的所有上級元素都獲取了,不過可以明確指定獲取哪一級
});

//初始化
function init(){
    $('input').val('');
};

//顯示隱藏的表單框
function addUser(){
    init();
    //show()里面的參數是動畫執行的時間,可有可無,也可加一個回調函數,hide()同理
    $('#addUser').show(1000);
    $('#btn-add').show();
    $('#btn-update').hide();
    console.log($('#uid').val());
};

$('#cancel').click(function(){
    $('#addUser').hide(1000);
    init();
});

//提交驗證
//定義一個全局變量,判斷操作是否成功
var result=false;
$('#btn-add').click(function(){
    msg();
    if(result){
        $('#addUser').hide(1000);
    }
})
function msg(){
    var val1=$('#uid').val();
    var val2=$('#user').val();
    var val3=$('#pwd').val();
    //正則驗證
    var reg_user = /^[\u0391-\uFFE5]+$/; 
    var reg_pwd = /^((\w*\d\w*[a-z]\w*)|(\w*[a-z]\w*\d\w*))$/i;
    if(val1==''){
        result=false;
        alert('請輸入ID')
    }else if(val2==''){
        result=false;
        alert('請輸入用戶名')
    }else if(val3==''){
        result=false;
        alert('請輸入密碼')
    }else if(!reg_user.test(val2)){
        result=false;
        alert('用戶名格式不正確')
    }else if(!reg_pwd.test(val3)){
        result=false;
        alert('密碼格式不正確')
    }else{
        result=true;
    };
    if(result){
        push();
    };
}
//把信息添加到相應表格內
function push(){
    //創建tr節點
    var $tr=$('<tr></tr>')
    //遍歷獲取input中的內容依次填到td中
    //第一個參數是索引,第二個參數是數據對象
    //如果是json格式的話,第一個參數是鍵,第二個是值
    $('form input').each(function(index,domEle){
        //添加td節點
        var $td=$('<td></td>');
        //將內容循環添加到創建好的td中
        $td.append($(domEle).val());
        //將td添加到創建的tr中
        $td.appendTo($tr);
    });
    //創建td的刪除更新按鈕
    var $td=$("<td><a id='up'>更新</a> <a id='del'>刪除</a> <a class='up'>上移</a> <a class='down'>下移</a></td> ");
    $td.appendTo($tr);
    //最后將創建的tr插入到table中的最后一個位置
    $tr.appendTo('table');
}

//更新操作
//定義全局變量,用於存放要修改的行號
var row=0
$('table').on('click','#up',function(){
    $('#addUser').show(1000);
    $('#btn-add').hide();
    $('#btn-update').show();
    //獲取最后一個td前面所有的td節點
    var val=$(this).parent().prevAll();
    var arr=[];
    //通過循環將所有td里面的文本放到數組里面
    for(var i=0;i<val.length;i++){
        arr[arr.length]=val.eq(i).text();
    };
    //得到的arr數組與表格順序相反
    //將arr數組逆序與表格順序相同,以便依次填到input中
    var arr1=arr.reverse();
    for(var j=0;j<$('form input').length;j++){
        $('form input').eq(j).val(arr1[j])
    };
    //i是該行所在的行號
    var i=$('table').find("tr").index(val.parent()[0]);
    console.log(i);
    row=i;
});

//更新驗證
$('#btn-update').on('click',function(){
    console.log($(this));
    msg();
    $('#addUser').hide(1000);
    //過濾器 過濾索引,過濾出行號為row的tr,並移除
    $('tr').filter(function(index){
        return index==row
    }).remove();
});

//查找操作
$('#findUser').on('click',function(){
    //記錄Input框中輸入的值用於查找
    var val=$('#findInp').val();
    console.log(val);
    var arr=[];
    //通過循環將第一列td的值存入到數組中
    for(var i=0;i<$("tr").find("td:first").length;i++){
        arr[arr.length]=$("tr").find("td:first").eq(i).text();
    };
    //通過循環判斷input中輸入的值,在表格中是否存在
    for(var j=0;j<arr.length;j++){
        if(arr[j]==val){
            result=true
            //記錄其所在的行號
            var z=j;
        }
    };
    //置頂操作
    //如果存在的話,就將該行置頂
    if(result){
        console.log(z);
//      $('tr:nth-child('+z+1+')').css('background-color','#2D93CA');同下兩行
        var $tr=$('tr').eq(z+1)
        $tr.css('background-color','#2D93CA');
        //淡入淡出的一個動畫
        $tr.fadeOut().fadeIn();
        //prepend() 在被選元素的開頭插入指定的內容
        $('table').prepend($tr);
    }
    else{
        alert('不存在該用戶,請確認您輸入的ID是否正確')
    }
})

//上移操作
$('table').on('click','.up',function(){
    //.parents('tr') 找到父親為tr的節點
    var $tr=$(this).parents('tr');
    console.log($tr);
    //判斷當前行是否是第一行
    if($tr.index()!=0){
        $tr.fadeOut().fadeIn();
        //prev() 獲得匹配元素集合中每個元素緊鄰的前一個同胞元素
        //before() 在被選元素的前面插入指定的內容
        $tr.prev().before($tr);
    }
})

//下移操作
$('table').on('click','.down',function(){
    //獲取一共多少行
    var length1=$('tr').length;
    var $tr=$(this).parents('tr');
    console.log(length1);
    //如果當前行是最后一行,則不再往下移
    if($tr.index()!=length1-1){
        $tr.fadeOut().fadeIn();
        //next() 獲得匹配元素集合中每個元素緊鄰的后一個同胞元素
        //after() 在被選元素的后面插入指定的內容
        $tr.next().after($tr);
    }
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM