Answered by:
after select data from jquery autocomplete set data into other td

Question
-
User-1634604574 posted
i have this code first column is auto complete i want after selected data from first column set data into other td with this code is not set where is the error
$("#Items_tbl").off("focus", "tr").on("focus", "tbody tr", function () { var series = $(this).find("td:eq(1) input").val(); var series2 = $(this).find("td:eq(3) input").val(); for (var i = 1; i < $("#Items_tbl tr").length; i++) { $(this).find("td:eq(1) input").autocomplete({ minLength: 0, select: function (event, ui) { $(this).val(""); $(this).val(ui.item.item_name); $.ajax({ type: 'POST', url: '/SalesInvoice/Return_Item_Price', data: { Item_name: $('#Items_tbl tr td:nth-child(2)').find("input").val(), Company: $("#companyt").val(), PriceList: $("#price_list").val(), Customer: $("#t_customer").val(), UOM: "", Warehouse: "" }, success: function (response) { //if (response == '') { // $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(12)").find("input").val("0.0"); // $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(20)").find("input").val("0.0"); // $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(5)").find("input").val("1"); // $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(30)").find("input").val($("#Form_CostCenter").val()); // $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(13)").find("input").val(math.multiply(math.bignumber(parseFloat("1")) * parseFloat("0.0"))); //} // else { data = $.map(response, function (item, a) { // alert(item.Item_Prices) $("#Items_tbl tr:eq('" + i + "') td:eq(12) input").val(item.Item_Prices) // $(this).find("td:eq(12)").find("input").val(item.Item_Prices); // $('#Items_tbl tr td:nth-child(13)').find("input").val(item.Item_Prices) Qty = $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(5)").find("input").val(); Exchange_rate = ToFloat("#exchange_rate"); var balance = item.balance_qty var Conversion_factor = item.Conversion_factor var qty_at_warehouse = math.divide(math.bignumber(parseFloat(balance)), math.bignumber(parseFloat(Conversion_factor))) $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(19)").find("input").val(balance); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(37)").find("input").val(qty_at_warehouse); rate = $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(12)").find("input").val(); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(12)").find("input").val(numeral(item.Item_Prices).format($("#NumberFormat").val())); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(5)").find("input").val("1"); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(13)").find("input").val(numeral(math.multiply(math.bignumber(1), math.bignumber(item.Item_Prices))).format($("#NumberFormat").val())); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(30)").find("input").val($("#Form_CostCenter").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(42)").find("input").val(item.barcode); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(20)").find("input").val(numeral(parseFloat(item.Item_Prices)).format($("#NumberFormat").val()) + " " + $("#currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(14)").find("input").val(item.item_name); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(18)").find("input").val(item.Conversion_factor); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(15)").find("input").val(item.item_code); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(16)").find("input").val(item.DefaultUOM_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(34)").find("input").val(item.default_warehouse_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(35)").find("input").val(item.batch_id); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(35)").find("input").attr('list', 'Item_Batches'); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(31)").find("input").val(item.expense_account_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(29)").find("input").val(item.selling_cost_center_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(17)").find("input").val(item.sales_uom_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(32)").find("input").val(item.weight_per_unit); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(33)").find("input").val(math.multiply(math.bignumber(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(5) input"))), math.bignumber(item.weight_per_unit))); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(29)").find("input").val(item.income_account_ID); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(44)").find("input").val(item.DiscountORAmount); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(45)").find("input").val(item.discount_percentage); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(48)").find("input").val(item.price_rule); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(52)").find("input").val(item.Coverage_By); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(53)").find("input").val(item.Coverage_Amt); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(54)").find("input").val(item.Company); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(37)").find("input").val(item.balance_qty); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(21)").find("input").val(numeral(math.multiply(math.bignumber(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(20) input"))), math.bignumber(Exchange_rate))).format($("#PL_Currency_format").val()) + " " + $("#price_list_currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(22)").find("input").val(numeral(math.multiply(math.bignumber(item.Item_Prices), math.bignumber(Exchange_rate))).format($("#PL_Currency_format").val()) + " " + $("#price_list_currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(23)").find("input").val(numeral(math.multiply(math.bignumber(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(13) input"))), math.bignumber(Exchange_rate))).format($("#PL_Currency_format").val()) + " " + $("#price_list_currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(24)").find("input").val($("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(12)").find("input").val() + " " + $("#currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(25)").find("input").val(math.multiply(math.bignumber(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(12) input"))), math.bignumber(Exchange_rate)) + " " + $("#price_list_currency").val()); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(27)").find("input").val(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(13) input"))); $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(28)").find("input").val(math.multiply(math.bignumber(ToFloat(("#Items_tbl tr:eq(" + i + ") td:eq(13) input"))), math.bignumber(Exchange_rate)) + " " + $("#price_list_currency").val()); }); // } }, dataType: "json" }).done(function () { Totales(); }); return false; }, source: function (request, response) { $.ajax({ type: "POST", url: "/AutoComplete/Get_sales_item", data: { term: request.term }, dataType: 'json', success: function (data) { // response(data); response(data.slice(0, 20)); } }); }, open: function (event, ui) { // $('.ui-autocomplete').append('<li class="advance_search"><a href="javascript:$("#ModalAdvanceSearch").modal("show")"><p style="cursor:pointer;color:#0284f6;font-family:Calibri;font-size:11pt"> <img src="@Url.Content("~/img/search_blue.png")" style="width:20px;height:15px" /> Advanced Search</p></a></li> <li class="advance_search"><a href="javascript:$("#ModalAdvanceSearch").modal("show")"><p style="cursor:pointer;color:#0284f6;font-family:Calibri;font-size:11pt"> <img src="@Url.Content("~/img/plus.png")" style="width:10px;height:10px" /> Create a New Customer</p></a></li>'); //See all results $('.ui-autocomplete').append('<li class="advance_search"><a href="javascript:$("#ModalAdvanceSearch").modal("show")"><p style="cursor:pointer;color:#0284f6;font-family:Calibri;font-size:11pt"> <img src="@Url.Content("~/img/search_blue.png")" style="width:20px;height:15px" /> Advanced Search</p></a></li>'); //See all results $(".advance_search").click(function () { $("#ModalAdvanceSearch").modal("show") }) }, }).focus(function () { if (this.value == "") { $(this).autocomplete("search"); } }).autocomplete('instance')._renderItem = function (ul, item) { return $("<li>").append("<div style='font-size:10pt;font-weight:bold'>" + item.item_name + "<p style='font-size:8pt;font-family:Calibri;font-weight:bold'></p>" + "</div>").appendTo(ul) } } })
those highlited code should set data to it which is return from sql db
Friday, October 25, 2019 6:04 PM
Answers
-
User-719153870 posted
Hi zhyanadil,
I did a simple test and reproduced your issue, the pronlem seems to be that in a for loop, the ajax will excute at last together for correct times with incorrect value which in your case
$("#Items_tbl tr").length
which should not be executed.To solve this problem, you can refer to jQuery ajax inside a loop problem, do your ajax in a function.
Also check below demo:
<html> <head> <meta name="viewport" content="width=device-width" /> <title>AutoComplete</title> <script src="~/Scripts/jquery-3.3.1.min.js"></script> <script> $(function () { for (var i = 1; i < $("#Items_tbl tr").length; i++) { doAjax(i); } function doAjax(i) { $.ajax({ type: 'POST', url: '/Demo/Return_Item_Price', data: { a: "123" }, success: function (response) { $("#Items_tbl").find("tr:eq(" + i + ")").find("td:eq(0)").find("input").val(response + i); } }); } }) </script> </head> <body> <div> <table id="Items_tbl"> <tr>Title</tr> <tr> <td> <input type="text" /> </td> </tr> <tr> <td> <input type="text" /> </td> <tr> <td> <input type="text" /> </td> </tr> </table> </div> </body> </html>
[HttpPost] public string Return_Item_Price(string a) { string stra = a; return stra; }
Here's the result:
Best Regard,
Yang Shen
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Monday, October 28, 2019 4:04 AM