从表单获取序列化数据

时间:2016-09-16 15:34:06

标签: javascript jquery

我有这样的页面:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<form id="kelas">
<div class="span12">
    <div class="span2">
        <input type="text" name="nama_kelas" value="Nama Kelas" style="width: 200px" class="input-block-level">
    </div>
    <div class="span3">
        <span id="simpan_kelas"  onclick="simpan_kelas(this)" class="btn btn-success"> Kelas</span>
    </div>
</div>
</form>

<script>
    function simpan_kelas(elm) {
        var nama_kelas = $(elm).prev().val();

        if (nama_kelas != "") {
            var data = $(elm).parent().serializeArray();
            alert("input : "+nama_kelas);
            alert("data : "+data);
        }
    }
</script>

如果输入不为空

  1. 第一个提醒将显示输入
  2. 第二个警报将显示来自序列输入的数据
  3. 我两个都失败了。

4 个答案:

答案 0 :(得分:0)

您的遍历不正确。

prev()寻找兄弟姐妹而<span>没有兄弟姐妹。

<span>的{​​{3}}是<div>,不是表格

建议我们首先找到表单,然后查看<input>

的内部表单
function simpan_kelas(elm) {

    var $form = $(elm).closest('form'); 

    var nama_kelas = $form.find('input[name=nama_kelas]').val();

    if (nama_kelas != "") {
        var data = $form.serialize();
        alert("input : "+nama_kelas);
        alert("data : "+data);
    }
}

答案 1 :(得分:0)

我可能会像this这样做。由于您使用的是jQuery,因此使用提供的点击处理程序可能更容易(也更清晰)。

$("#cssSelector").click(function() {
    //do stuff
});

此外,既然你正在做jQuery,直接获取input元素的值可能更清楚:

$("#cssSelector").val();

@charlietfl提供的答案将使用您目前正在进行的更多内容。就个人而言,我宁愿使用点击处理程序并将我的功能全部保存在js文件中(而不是用html中的onClick内容拆分)。

最终代码(与上面链接)如下所示:

<form id="kelas">
    <div class="span12">
        <div class="span2">
            <input type="text" name="nama_kelas" value="Nama Kelas" style="width: 200px" class="input-block-level">
        </div>
        <div class="span3">
            <input type="button" id="simpan_kelas" value="Kelas" class="btn btn-success" />
        </div>
    </div>
</form>

$("#simpan_kelas").click(function() {
    var nama_kelas = $("#simpan_kelas").val();

    if (nama_kelas != "") {
        var data = $("#kelas").serializeArray();
        alert("input : "+nama_kelas);
        alert("data : "+data);
    }
});

答案 2 :(得分:0)

我认为,这可以帮助您:https://api.jquery.com/serialize/

#!/bin/bash
HOST='ftp.server'   # change the ipaddress accordingly
USER='user'   # username also change
PASSWD='pass'    # password also change
doy=$(date +%j)
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
mget filename_$doy*
bye
EOF

答案 3 :(得分:0)

因为<span id="simpan_kelas" onclick="simpan_kelas(this)" class="btn btn-success"> Kelas</span> 没有prv Dom ..