مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

laleh_456

عضویت از 1395/10/06

محاسبات روی دو تکست باکس با استفاده ازajax

  • جمعه 1 بهمن 1395
  • 23:53
تشکر میکنم

سلام دوستان من میخام بدون اینکه صفحه رفرش بشه با استفاده از  ajax دوتا تکست باکس رو که مقادیرشون توسط کاربر عوض میشه رو محاسبه کنم و نشون بدم.ممنون میشم راهنماییم کنید

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 08:31

مشکلتون کجاست ؟

کد قسمتی که مشکل داره را قرار دهید تا بررسی کنیم

کاربر سایت

laleh_456

عضویت از 1395/10/06

  • شنبه 2 بهمن 1395
  • 10:35

با

@model List<CharmEshop.ViewModels.Home.BasketViewModel>


@{
    ViewBag.Title = "Basket";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm("AddGroup", "Admin", FormMethod.Post, new { id = "myForm" }))
                    {
                            <table class="table-full table-total">
                                <tr>
                                    <th>
                                        @Html.DisplayName("تصویر")
                                    </th>
                                    <th>
                                        @Html.DisplayName("نام محصول")
                                    </th>
                                    <th>
                                        @Html.DisplayName("قیمت واحد")
                                    </th>
                                    <th>
                                        @Html.DisplayName("تعداد")
                                    </th>
                                    <th>
                                        @Html.DisplayName("قیمت نهایی")
                                    </th>
                                </tr>

                                @foreach (var item in Model)
                                    {
                                    <tr>
                                        <td>
                                            @Html.ImageFor(modelItem => item.Product.Image, new { width = "80" }, "Tulips.jpg", "Files", "UploadImages")
                                        </td>
                                        <td>
                                            @Html.DisplayFor(modelItem => item.Product.Name)

                                            <img src="~/Content/img/delete.png" alt="حذف محصول" style="cursor:pointer;" class="deleteProduct" productid="@item.Product.Id" />
                                        </td>
                                        <td>
                                            @item.Product.Price.ToString().Trim('0').Trim('.').ToPrice() تومان
                                        </td>
                                        <td>
                                            @Html.TextAreaFor(modelItem => item.Count, new { @class = "txtCountProduct", style = "width: 40px; ", productid = item.Product.Id })
                                        </td>
                                        <td id="total_sum_value">
                                            @((@item.Count * @item.Product.Price).ToString().Trim('0').Trim('.').ToPrice()) تومان
                                        </td>

                                    </tr>
                                    }
                            </table>
 
}
    @section Scripts{
        <script src="~/Scripts/AutoNumeric/jquery-price.js"></script>
        <script>
            $(function () {
                $(".txtCountProduct").price();

                $(".deleteProduct").click(function () {
                    var id = $(this).attr("productid");
                    var img = $(this);
                    $.ajax({
                        url: "/Home/RemoveCart",
                        data: { Id: id },
                        type: "Post",
                        dataType: "Json",
                        success: function (result) {
                            if (result.Success) {
                                img.parent().parent().hide();
                                $("#CartItems").html(result.Html);
                            }
                            eval(result.Script);
                        },
                        error: function () {
                            alert("خطا!");
                        }
                    });
                });

                $(".txtCountProduct").change(function () {
                    var count = $(this).val();
                    var id = $(this).attr("productid");
                    $.ajax({
                        url: "/Home/AddToCart",
                        data: { Id: id, Count: count,t:1 },
                        type: "Post",
                        dataType: "Json",
                        success: function (result) {
                            if (result.Success) {
                                $("#CartItems").html(result.Html);

                            }
                            eval(result.Script);
                        },
                        error: function () {
                            alert("خطا!");
                        }
                    });
                });

            });

        </script>
    }
ممنون

میخام هر زمانی که کاربر count رو تغییر میده بدون رفرش صفحه مقدار قیمت نهایی تغییر کنه و مجموع هم حساب بشه و نوشته بشه. با آنگولار نوشتم کدها رو اما زمانیکه روی هاست گذاشتمش موقع لود صفحه کد ها رو نمایش میده که ظاهر زیبایی نداره گفتم با ajax شاید پرسرعتتر باشه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 12:38

من متوجه کدهاتون نشدم

ولی باید مقدار به کنترلر ارسال کنید و در هرکجا که نگهداری میکنید بروز رسانی کنید

سپس لیست را مجدد لود کنید و با Ajax در Div یا سکشن مورد نظر قرار دهید

البه با انگولار خیلی ساده تر و سریع تر هست

کاربر سایت

laleh_456

عضویت از 1395/10/06

  • شنبه 2 بهمن 1395
  • 12:43

با آنگولار انجام دادم و درست کار میکنه اما }{ موقع لود صفحه آکولاد مربوطه رو برام میاره تا زمانیکه قیمت رو توش بنویسه.یه مقاله تو سایت بود خوندم و ng-cloak استفاده کردم اما هنوز مشکل داره و درست نشده.

 <tbody ng-cloak>
                                    @{int i = 1;}
                                    @foreach (var item in Model)
                                    {
                                        <tr>
                                            <td>
                                                @Html.ImageFor(modelItem => item.Product.Image, new { width = "80" }, "Tulips.jpg", "Files", "UploadImages")
                                            </td>
                                            <td>
                                                @Html.DisplayFor(modelItem => item.Product.Name)
                                                <img src="~/Content/img/delete.png" alt="حذف محصول" style="cursor:pointer;" class="deleteProduct" productid="@item.Product.Id" type="deletepr" />
                                            </td>
                                            <td>
                                                @item.Product.Price.ToString().Trim('0').Trim('.').ToPrice() تومان
                                            </td>
                                            <td>
                                                @Html.TextBoxFor(modelItem => item.Count, new { type = "number", @class = "txtCountProduct", ng_model = "txtCount" + item.Product.Id, data_ng_init = "txtCount" + item.Product.Id + "=" + item.Count, style = "width: 40px;", productid = item.Product.Id })
                                            </td>
                                            <td id="lastPrice@(i)" ng-cloak>
                                                {{txtCount@(item.Product.Id) * @item.Product.Price}}
                                            </td>
                                        </tr>
                                        i++;
                                    }
                                </tbody>

من ng-cloack را به tbody , tr مربوطه دادم. البته به div  اصلی هم دادم که بازم عمل نکرد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 12:45

به احتمال خیلی زیاد تداخلی وجود داره

از روی این کدها نمیشه تشخصی داد

باید خودتون کد رو trace کنید

کاربر سایت

laleh_456

عضویت از 1395/10/06

  • شنبه 2 بهمن 1395
  • 12:59

متوجه نمیشم چی رو باید trace کنم و چی با چی تداخل داره؟ یعنی مشکل رو نمیفهمم.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 2 بهمن 1395
  • 13:01

وقتی متوجه هطا نمیشوید باید کد ها را Trace کنید تا خطا معمولا بشه

تریس یعنی خط به خط اجرا کنید تا خروجی ببینید

کاربر سایت

laleh_456

عضویت از 1395/10/06

  • شنبه 2 بهمن 1395
  • 13:22
 <img src="~/Content/img/delete.png" alt="حذف محصول" style="cursor:pointer;" class="deleteProduct" productid="@item.Product.Id"  />
                                            

متوجه شدم مشکل از کجاست.من وقتی کالایی رو حذف میکنم یه بار صفحه reload میشه.تو این قسمت مشکل داره.یعنی این خط کد:

ممنون

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)