【问题标题】:JQuery cannot get valuesJQuery 无法获取值
【发布时间】:2017-03-11 09:07:10
【问题描述】:

我可以从文本区域获取文本/值。但我正在尝试从表单中获取输入。我已经阅读了很多文章来尝试不同的事情,但我只能从我的 textarea 中获取一个值/文本。

尝试序列化,得到相同的结果。我有一个打印出来的消息,我的 NodeJS 服务器在控制台上吐出相同的结果。我尝试过使用类而不是 ID。尝试向客户添加 type="text" 无效。尝试使用 JSON.stringify 并且不使用 cust 和 date。输入字段不起作用吗?我正在使用 JQuery 3.1.1

回复说:{date: '', customer: '""', notes: 'notes go here'}

<form name="loginForm" method="post" action="/sendReturnForm" id="returnForm">

        <p>Date:</p>
        <input type="date" name="formDate" id="formDate"/>
        <p>Customer:</p>
        <input name="formCustomer" id="formCustomer"/>
        <p>Notes:</p>
        <textarea rows="5" cols="40" id="notes">Notes go here</textarea>
</form>

<script language="JavaScript">
    $(document).ready(function () {
        var values = {
            date: $("#formDate").text(),
            customer: JSON.stringify($("#formCustomer").text()),
            notes: $("#notes").text()
        };

        $(".submitButton").click(function () {
            $.ajax({
                url: '/sendReturnForm',
                type: 'POST',
                data: JSON.stringify(values),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                async: false,
                success: function (msg) {
                    alert(JSON.stringify(values));
                }
            });
        });
    });
</script>

【问题讨论】:

  • 感谢大家的帮助。正如 Yaroslav 和 Mosd 所指出的,数据收集在错误的位置。我尝试了 text 和 val,但当我尝试收集不存在的数据时并不重要。

标签: javascript jquery forms


【解决方案1】:

$('#formCustomer') 是一个输入字段,因此要获得它的值,您需要使用 $('#formCustomer').val() 而不是 $(" #formCustomer").text()

【讨论】:

  • 是的,文本不起作用,但我最初尝试在两者之间切换。最终成为需要移动到提交点击按钮的代码。
【解决方案2】:

点击提交按钮时需要收集数据:

$(".submitButton").click(function (event) {
    event.preventDefault();
    var values = {
        date: $("#formDate").val(),
        customer: JSON.stringify($("#formCustomer").val()),
        notes: $("#notes").text()
    };
    $.ajax({
        url: '/sendReturnForm',
        type: 'POST',
        data: JSON.stringify(values),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        async: false,
        success: function (msg) {
            alert(JSON.stringify(values));
        }
    });
});

【讨论】:

  • 现在看到它的布局是有道理的,表单加载并且我在字段中预先制作了文本,这就是为什么我只得到那个字段。谢谢。
【解决方案3】:

正如@Yaroslav 已经指出的那样,您应该在 onclick 处理程序中收集值,请参阅我的代码,将值包装在我在发送数据之前调用的函数中,也 val 对我有用,而不是 text() :

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="loginForm" method="post" action="/sendReturnForm" id="returnForm">

        <p>Date:</p>
        <input type="date" name="formDate" id="formDate"/>
        <p>Customer:</p>
        <input name="formCustomer" id="formCustomer"/>
        <p>Notes:</p>
        <textarea rows="5" cols="40" id="notes">Notes go here</textarea>
        <button type='button' class='submitButton'>submit</button>
</form>

<script language="JavaScript">
    $(document).ready(function () {
        
        function getValues(){
                  var values = {
            date: $("#formDate").val(),
            customer:                        JSON.stringify($("#formCustomer").val()),
            notes: $("#notes").text()
        };
        return values;
        }
        //$.each($('#returnForm').serializeArray(), function (i, field) {
            //values[field.name] = field.value;
        //});
        $(".submitButton").click(function () {
            console.log(JSON.stringify(getValues()));
            $.ajax({
                url: '/sendReturnForm',
                type: 'POST',
                data: JSON.stringify(getValues()),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                async: false,
                success: function (msg) {
                    alert(JSON.stringify(values));
                }
            });
        });
    });
    </script>

【讨论】:

    【解决方案4】:

    您必须使用 .val() 函数而不是 .text() 函数才能从输入中获取值。见下面的代码。对于 textarea .text() 很好,但对于输入 .val() 会起作用。

    <script language="JavaScript">
    $(document).ready(function () {
        var values = {
            date: $("#formDate").val(),
            customer: JSON.stringify($("#formCustomer").text()),
            notes: $("#notes").val()
        };
        //$.each($('#returnForm').serializeArray(), function (i, field) {
            //values[field.name] = field.value;
        //});
        $(".submitButton").click(function () {
            $.ajax({
                url: '/sendReturnForm',
                type: 'POST',
                data: JSON.stringify(values),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                async: false,
                success: function (msg) {
                    alert(JSON.stringify(values));
                }
            });
        });
    });
    

    希望这对你有用。

    【讨论】:

    • 是的,文本不起作用,但我最初尝试在两者之间切换。最终成为需要移动到提交点击按钮的代码。
    猜你喜欢
    • 1970-01-01
    • 2020-08-27
    • 2013-03-22
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多