Jquery 动态内容和ajax发布

Jquery 动态内容和ajax发布,jquery,ajax,Jquery,Ajax,我有一个页面,一个代码块可以有1到100次迭代,在这个代码块中,字段等在每次迭代中都有相同的名称和ID,因为它包含在for循环中 下面是循环代码的一个简单示例: <div id="form" class="form"> <form method="post" id="input_form" action="<?=$PHP_SELF?>" enctype="multipart/form-data"> <input type="tex

我有一个页面,一个代码块可以有1到100次迭代,在这个代码块中,字段等在每次迭代中都有相同的名称和ID,因为它包含在for循环中

下面是循环代码的一个简单示例:

<div id="form" class="form">
    <form method="post" id="input_form" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
        <input type="text" name="start" id="start">
        <input type="text" name="end" id="end">
        <input type="text" name="duration" id="duration">
        <button type="button" id="calc">Calc</button>
        <input type="submit" name="submit" value="Submit">
    </form>
</div>
我需要ajax调用使用正确的开始和结束触发,然后在不知道有多少表单或哪个表单正在使用的情况下,在用户正在使用的表单中填写持续时间


您需要使侦听器和选择器与用户正在使用的表单相关:

您确实意识到页面上不能有重复的ID。它们必须是独一无二的。假设您将这些ID更改为类,我将编写以下代码:

jQuery(document).ready(function () {
    $(".button").click(function () { // add the class button to the submit
        var t = $(this);
        var start_date = t.prev(".start").val();
        var end_date = t.prev(".end").val();
        var dataString = 'start_date=' + start_date + '&end_date=' + end_date;
        $.ajax({
            type: "POST",
            url: "calc.php",
            data: dataString,
            success: function (data) {
                t.prev('.duration').val(data);
            }
        });
    });
});

您需要使侦听器和选择器与用户正在使用的表单相关:

您确实意识到页面上不能有重复的ID。它们必须是独一无二的。假设您将这些ID更改为类,我将编写以下代码:

jQuery(document).ready(function () {
    $(".button").click(function () { // add the class button to the submit
        var t = $(this);
        var start_date = t.prev(".start").val();
        var end_date = t.prev(".end").val();
        var dataString = 'start_date=' + start_date + '&end_date=' + end_date;
        $.ajax({
            type: "POST",
            url: "calc.php",
            data: dataString,
            success: function (data) {
                t.prev('.duration').val(data);
            }
        });
    });
});

您不应该捕获ajax成功响应
成功:函数(数据)
{ 
$('#duration').val(数据);

}

您不应该看到ajax成功响应
成功:函数(数据)
{ 
$('#duration').val(数据);

}

您不应该捕捉ajax成功响应success:function(data){$(''duration').val(data)}。为什么不为按钮使用class(
$(“.calc”)
)或name(
$(“[name=calc]”)呢?id在html页面中是唯一的,您必须使用#calc0,#calc1,……您不应该捕获ajax成功响应success:function(data){$(“#duration”).val(data)}为什么不为按钮使用class(
$(“.calc”)
)或name(
$(“[name=calc]”)或name(
)?id在html页面中是唯一的,您必须使用#calc0,#calc1,…..感谢您的回答-当我这样做时,我得到了答案“未捕获引用错误:数据未定义”在t.prev('.duration').val(数据);啊,它应该是
success:function(数据){
已经解决了由于下面的答案,但无法使用t.prev('.duration').val(数据)-如果我使用$('.duration').val(数据),它可以工作但随后它用类durationHad填充所有的框,并使用t.nestest(“.form”).find(“.start”).val();若要获取值,否则将显示未定义-仍然无法确定如何仅在正确的持续时间框中获取结果though@bhttoan也许最简单的方法是转到父窗体,然后从那里找到所需的元素。因此使用
var form=$(this)。parents('form');
而不是
var t=$(this);
,然后
form.find(…)
而不是
t.prev(…)
谢谢你的回答-当我这样做时,我在t.prev('.duration').val(数据)上得到了“未捕获的引用错误:数据未定义”;啊,应该是
success:function(数据){
已经解决了这个问题,这要感谢下面的答案,但无法使用t.prev使它工作('.duration').val(数据)-如果我使用$('.duration').val(数据),它会起作用,但随后它会用类durationHad填充所有的框,必须使用t.closest(“.form”).find(“.start”).val();若要获取值,否则将显示未定义-仍然无法确定如何仅在正确的持续时间框中获取结果though@bhttoan也许最简单的方法是转到父窗体,然后从那里找到所需的元素。因此使用
var form=$(this)。parents('form');
而不是
var t=$(this);
,然后
表单。查找(…)
而不是
t.prev(…)