gpt4 book ai didi

javascript - 具有多种表单输入的 Ajax

转载 作者:行者123 更新时间:2023-12-02 20:41:54 25 4
gpt4 key购买 nike

我正在开发一个新系统,但在使用 jquery + ajax 时陷入困境,并使其与页面上发生的其他事情正常工作。

该页面基本上是提交报价的页面,您可以在该页面上添加任意数量的报价项目。当有人点击新项目时,它会运行以下代码,获取隐藏元素的值,并将其用于所有新元素 Id 中,以保持它们的唯一性。

新产品代码:

    function addFormField() {
var id = document.getElementById("field_id").value;
$("#products").append("
<table width='600' cellpadding='5' cellspacing='0' class='Add_Products' id='row" + id + "'>
<td width='250' class='left'>
<label>Select Product Category</label>
</td>
<td class='right' >
<label><select name='ProductCategory' id='ProductCategory'>
<?php foreach($categories as $key=>$category){
echo "<option value=".$key.">".$category."</option>";
}
?>
</select>
</label>
</td>
</tr>
<tr>
<td width='250' class='left'>
<label>Select Product Template</label>
</td>
<td class='right' >
<label>
<select name='data[QuoteItem][" + id + "][product_id]' id='QuoteItem" + id + "product_id'></select>
</label>
</td>
</tr>
<tr >
<td class='left'>Name</td>
<td class='right'>
<label>
<input name='data[QuoteItem][" + id + "][name]' type='text' id='QuoteItem" + id + "name' size='50' />
</label>
</td>
</tr>
<tr >
<td class='left'>
Price (ex GST)
</td>
<td class='right'>
<input type='text' name='data[QuoteItem][" + id + "][price]' id='QuoteItem" + id + "price' onchange='totalProductPrice();' class='quote-item-price' />
</td>
</tr>
<tr>
<td class='left'>
Description
</td>
<td class='right'>
<label>
<textarea name='data[QuoteItem][" + id + "][description]' cols='38' rows='5' id='QuoteItem" + id + "description'>
</textarea>
</label>
</td>
</tr>
<tr>
<td>
<a href='#' onClick='removeFormField(\"#row" + id + "\"); return false;'>Remove</a>
</td>
</tr>
</table>
");


$('#row' + id).highlightFade({
speed:1000
});

id = (id - 1) + 2;
document.getElementById("field_id").value = id;
}

我想做的下一件事是使用 jQuery 设置一个 AJAX 查询,选择该查询时将请求适当的数据并填充产品框,但我不知道如何获取该组元素的 ID 以确保正确填充下拉框,并确保检测到正确的框的 onchange。

我尝试过将 ID 添加到下拉框的 id 等方法,但 onchagne 不起作用。

下面是我的 jquery ajax 代码,用于检索产品列表

    $(function(){
$("select#ProductCategory").change(function(){
var url = "productList/" + $(this).val() + "";
var id = $("select#ProductCategory").attr('name');
$.getJSON(url,{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
options += '<option value="0">None</option>';
$.each(j, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
})
$("select#QuoteItem" + id + "product_id").html(options);
})
})
})

因为我的生活无法弄清楚这一点,所以如果有人能够阐明最好的方法,那就太好了。

另外,如果我需要进一步澄清,请告诉我,因为我很难解释。

提前致谢

最佳答案

我的项目中有类似的功能。我是这样做的:

我有一个从 0 开始的全局变量,每次添加新字段时都会增加:

var num = 0;

jQuery(function($){
$("#add_field").click(function(){
num++;
//here add new field, with id contains 'num'
});
});

为了更容易调试,您应该从一个简单的元素开始,对其进行测试,使其没有错误,并向其中添加更多字段。

要通过 AJAX 提交表单,请使用 jQuery form plugins ,因此您无需在提交表单的 ajax 代码中手动添加所有字段。

关于javascript - 具有多种表单输入的 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com