jquery 操作form元素

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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({sr...
    专注寒冰三千岁阅读 504评论 0 4
  • Attribute: $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img...
    扑克脸_457e阅读 557评论 0 1
  • 本人做php的,最近发现JS真的是博大精深啊,比PHP难.在HTML中,表单是由form元素来表示的,但是在jav...
    linfree阅读 2,142评论 3 17
  • Bootstrap是什么? 一套易用、优雅、灵活、可扩展的前端工具集--BootStrap。GitHub上介绍 的...
    凛0_0阅读 10,861评论 3 184
  • 我近两天看了两部老电影《后会无期》和《三傻大闹宝莱坞》,随着我看电影的次数越多,越来越发现自己的感受力很弱。当释梦...
    晓丽姐阅读 121评论 0 3