javascript - JQuery忽略表单元素

标签 javascript jquery html

我有这个 JQuery:

$(document).ready(function() {
    $("#generate").click(function() {
        var texts = [];
        alert();
        $("form label").each(function() {
            var oLabel = $(this);
            var oInput = oLabel.next();
            texts.push(oLabel.text() + " " + oInput.val());
        });
        texts[0] += texts[1];
        texts[2] += texts[3];
        for(i=3;i<texts.length;i++)
            texts[i-1] = texts[i];
        texts[texts.length-1] = null;
        $("#cont").html(texts.join("<br />"));
    });
});

它所做的是读取表单元素,然后将它们作为常规文本键入(这是有目的的)。

这就是我的表单的样子......

<div id="cont" style="float:right; width:75%; height:auto">
    <form onSubmit="return generate();">
      <label class="itemLabel" for="name">Name : </label>
        <input name="name" type="text" class="itemInput" value="<? echo $queryB[1]; ?>" readonly="readonly" />

        <label>@ Some Text</label><br />
        <label for="priPhone" class="itemLabel">Customer Telephone Number : </label>Phone#
        <input name="priPhone" type="text" class="itemInput" readonly="readonly" value="<? echo $queryB[2]; ?>" />

        <label for="secPhone"> // Mobile#</label>
        <input name="secPhone" type="text" class="itemInput" readonly="readonly" value="<? echo $queryB[3]; ?>" /><br />
        <label class="itemLabel" for="email">Customer Email Address : </label>
        <input name="email" type="text" class="itemInput" readonly="readonly" value="<? echo $queryB[4]; ?>" /><br />

        <label>***************</label><br />
        <label>Best Regards,</label><br />
        <input name="another_field" type="text" /><br />
        <label>last thing</label><br />
        <button type="button" id="generate">Generate</button>
    </form>
</div>

现在,当我单击“生成”按钮时,一切正常,只是它忽略了“another_field”并且没有获得它的值

有人有解决这个问题的想法吗? (注意:这段代码将在大约 25 个表单上运行,所以我需要让它工作。)

更新:

示例输出:

Name : username @ Some Text
Customer Telephone Number :  90237590 // 3298579
Customer Email Address : email@host.com
***************
Best Regards,
last_field
last thing 

解决方法

因为我让所有的表格都有相同的结尾,所以我已经能够得到这段代码:

texts[0] += " " + texts[1];
texts[1] = texts[2] + " " + texts[3];
for(i=4;i<texts.length;i++)
    texts[i-2] = texts[i];
texts[texts.length-2] = texts[texts.length-3];
texts[texts.length-3] = $("#agent").val() ;
texts[texts.length-1] = null;

它解决了问题,但我正在寻找更好的方法来完成此任务。

最佳答案

试试这个 javascript:

$(document).ready(function() {
    $("#generate").click(function() {
        var texts = [];
        $("form").children().each(function() {
            var el = $(this);
            if (el.prop('tagName') == "LABEL") texts.push(el.text());
            if (el.prop('tagName') == "INPUT") texts.push(el.val());
            if (el.prop('tagName') == "BR") texts.push("<br />");
        });
        $("#cont").html(texts.join(""));
    });
});

这里的工作示例:

http://jsfiddle.net/Q5AD4/6/

关于javascript - JQuery忽略表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705102/

相关文章:

javascript - 将 Jenkins 用于基于 Gulp 的项目

javascript - 导航栏 css html 下定位 slider 的问题

javascript - 我在 jQuery 中收到函数未定义错误,即使该函数已定义

javascript:在另一个文件中使用一个文件中的变量

php - Codeigniter 3应用程序: update MySQL table column and the corresponding view through Ajax

javascript - 使用 Knockout.js 自定义绑定(bind)进行 Bootstrap 选择

javascript - 无法在 ReactJS 前端显示圆形元素

javascript - 将本地 glTF 文件加载到 Javascript 内存中

jquery - 用线连接分部

html - 使用 knockout js 实现 html5 拖放照片,durandal 2.0