JQuery无法获取值

时间:2017-03-11 09:07:10

标签: javascript jquery forms

我可以从文本区域获取文本/ val。但我试图从表单中获取输入。我已经阅读了很多文章来尝试不同的东西,但我只能从我的文本区域获得一个值/文本。

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

回复说:{date:'',customer:'""',注意:'注释到这里'}

<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>

4 个答案:

答案 0 :(得分:3)

$('#formCustomer')是一个输入字段,因此要获得其值,您需要使用 $('#formCustomer')。val()而不是 $(“ #formCustomer“)。文本()

答案 1 :(得分: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));
        }
    });
});

答案 2 :(得分:2)

正如@Yaroslav已经指出的那样,你应该在onclick处理程序中收集值,看看我的代码,在发送数据之前将函数包装在我调用的函数中,还为我工作而不是text() :

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您必须使用.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));
            }
        });
    });
});

希望这对你有用。