如何通过按钮单击Ajax获取文本框值

时间:2016-08-09 14:30:46

标签: javascript jquery ajax

我有2个输入:

<td><input id='someName_1' type='textbox' value='1' /><td>
<td><input id='someID_1' class="button1" type='button' value='Submit' /></td>

我有以下ajax代码:

$("body").on('click', '.button1', function () {
    var params = { id: this.id, value: (?) };
    $.ajax({
        type: 'POST',
        url: '@Url.Action(SomeUrl- pointless)',
        dataType: 'json',
        cache: false,
        contentType: 'application/json; charset=utf­8',
        data: JSON.stringify(params),
        success: function (data, status) {
            doingsomething
        },
        error: function (er, info) {

        },
        complete: function (xhr, status) {

        },
    });
});

问题是:如果我的所有id都是通过来自服务器的响应动态创建的,那么我如何通过someID_1从变量'params'获取值,来自textbox的字段'value'?输入是在dinamically创建。

有代码生成我的输入:

var s = [];
$.each(data.items, function (i, item) {
                var t = "<td><input id='someName_" + item.id + "' type='textbox' value='1' /></td>" +
                "<td><input id='someID_" + item.id + "' class='button1' type='button' value='Submit' /></td></tr>";
                s.push(t);                   
            });
$('body').html(s.join(""));

2 个答案:

答案 0 :(得分:1)

由于您的DOM有点问题,您必须遍历前一个td元素并从那里获取输入。

以下是一个例子:

$("body").on('click', '.button1', function () {
    input = $(this).parent('td').prev('td').children('input[type=textbox]')
    var params = { id: $(this).attr('id'), value: input.val() };
    $.ajax({
        type: 'POST',
        url: '@Url.Action(SomeUrl- pointless)',
        dataType: 'json',
        cache: false,
        contentType: 'application/json; charset=utf­8',
        data: JSON.stringify(params),
        success: function (data, status) {
            doingsomething
        },
        error: function (er, info) {

        },
        complete: function (xhr, status) {

        },
    });
});

答案 1 :(得分:0)

我不确定我在这里看到一个问题,但也许我误解了这个问题?

基本上,您可以使用jquery:

来获取任何具有任何ID的DOM元素
$("#MY_RANDOM_ID")

因此您可以使用以下命令访问其值(用户输入或自动生成的输入)

$("#MY_RANDOM_ID").val()