jquery 操作form元素

作者: 滚石_c2a6 | 来源:发表于2017-03-20 12:35 被阅读124次

    web开发中经常会碰到表单操作。表单元素的类型有text、password、select、checkbox、radio、textarea、file、hidden、button、image、reset和submit,不包括html5新类型。下面介绍这些常用的表单元素的赋值和取值操作,file类型有时间会另外写篇文章具体介绍。

    text、password、textarea、hidden操作:

    $("selector").val()  //get value
    $("selector").val(value) //set value
    

    select 操作:

    $("selector").val()  //get select value
    $("selector option:selected").text() //get select text
    $("selector").val(value) //set value
    

    radio 操作:

    $("selector :checked").val()  //get radio checked value
    $("selector [value="+ value+"]").prop('checked', true); //set radio checked by value
    $("selector ").eq(index).prop('checked', true); //set radio checked by index
    

    checkbox 操作:

    $("selector :checked").val()  //get single checkbox checked value
     
    //get  checked array from checkbox group
    var checkboxList=[]; 
    $("selector :checked").each(function(index,item){
        checkboxList.push($(this).val());
    }) 
    
    $("selector [value="+ value+"]").prop('checked', true); //set checkbox checked by value
    $("selector ").eq(index).prop('checked', true); //set checkbox checked by index
    
    //set checkbox checked from checked array 
    $("selector ").each(function(index,item){                                   
           $(this).prop("checked",$.inArray($(this).val(),checkboxList)!==-1)
    })
    
    //set all checkbox checked and not checked 
    $("#checkAll").click(function(){
        $('input:checkbox').not(this).prop('checked', this.checked);
    });
    
    //if the checkbox is checked
    $("selector ").is(':checked')
    

    // form serialize
    $('form').serialize()

    综合示例:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Sign up</title>
        <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <style type="text/css">
    form {
        width: 600px;
        margin: 50px auto;
    }
    </style>
    
    <body>
        <form class="form-horizontal" role="form">
            <div class="form-group">
                <label for="firstname" class="col-sm-2 control-label">Username:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="username" id="username" placeholder="Your username" value="">
                </div>
            </div>
            <div class="form-group">
                <label for="pwd" class="col-sm-2 control-label">Password:</label>
                <div class="col-sm-10">
                    <input type="password" class="form-control" name="password" id="pwd" value="">
                </div>
            </div>
            <div class="form-group">
                <label for="firstname" class="col-sm-2 control-label">Education:</label>
                <div class="col-sm-10">
                    <select class="form-control" name="education">
                        <option value=1>--Please select--</option>
                        <option value=1>Primary school</option>
                        <option value=2>Middle school</option>
                        <option value=3>Senior high school</option>
                        <option value=4>University</option>
                    </select>
                </div>
            </div>
            <div class="form-group">
                <label for="lastname" class="col-sm-2 control-label">Sex:</label>
                <div class="col-sm-10">
                    <label class="checkbox-inline">
                        <input type="radio" name="sex" value=1> Male
                    </label>
                    <label class="checkbox-inline">
                        <input type="radio" name="sex" value=0> Female
                    </label>
                </div>
            </div>
            <div class="form-group">
                <label for="interest" class="col-sm-2 control-label">Interest:</label>
                <div class="col-sm-10">
                    <label class="checkbox-inline">
                        <input type="checkbox" name="interest" value=0>Books
                    </label>
                    <label class="checkbox-inline">
                        <input type="checkbox" name="interest" value=1>Music
                    </label>
                    <label class="checkbox-inline">
                        <input type="checkbox" name="interest" value="2">Movies
                    </label>
                    <label class="checkbox-inline">
                        <input type="checkbox" name="interest" value="3">Sports
                    </label>
                    <label class="checkbox-inline">
                        <input type="checkbox" name="interest" value="4">Travel
                    </label>
                </div>
            </div>
            <div class="form-group">
                <label for="introduction" class="col-sm-2 control-label">Introduction:</label>
                <div class="col-sm-10">
                    <textarea name="introduction" class="form-control" rows="4"></textarea>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-success">Sign up</button>
                </div>
            </div>
        </form>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
        $(function() {
            var data = {
                username: "Ross",
                password: "123456",
                education: 2,
                sex: 1,
                interest: [0, 1, 4],
                introduction: "My name is Rosste"
            };
    
            //set value when form type is "text"、"password"、"hidden"、"textarea"
            $("input[name='username']").val(data.username);
            $("input[name='password']").val(data.password);
            $("textarea").val(data.introduction);
    
            //set select value
            $("select[name='education']").val(data.education);
    
            //set radio checked by value
            $("input[name='sex'][value=" + data.sex + "]").prop('checked', true);
    
            //set radio checked by index
            // $("input[name='sex']").eq(0).prop('checked', true);  
    
            //set checkbox group checked from checked array
            $("input[name='interest']").each(function(index, item) {
                $(this).prop("checked", $.inArray(parseInt($(this).val()), data.interest) !== -1)
            })
    
            //set checkbox checked by value
            // $("input[name='interest']").eq(0).prop('checked', true);
    
            //set checkbox checked by value
            // $("input[name='interest'][value=3]").prop('checked', true);  
    
    
    
            $("button").on("click", function(event) {
                //prevent it from submitting a form
                event.preventDefault();
    
                //get value when form type is "text"、"password"、"hidden"、"textarea"
                console.log($("input[type='text']").val(), "username")
                console.log($("input[type='password']").val(), "password")
                console.log($("textarea").val(), "introduction")
    
                //get select value
                console.log($("select").val(), "education")
                    //get select text
                    // console.log($("select option:selected").text(),"education text")
    
                //get checked value
                console.log($("input[type='radio']:checked").val(), "Sex");
    
                //get checked array from checkbox group
                var checkboxList = [];
                $("input[type='checkbox']:checked").each(function(index, item) {
                    checkboxList.push(parseInt($(this).val()));
                    console.log(checkboxList, "checkboxList");
                })
    
                //serialize the form for ajax to send to backend
                console.log(decodeURIComponent($('form').serialize()), "serialize")
    
            })
    
        })
        </script>
    </body>
    
    </html>
    
    

    相关文章

      网友评论

        本文标题:jquery 操作form元素

        本文链接:https://www.haomeiwen.com/subject/xedbnttx.html