دسته بندی ها
15:12 1400/05/11

ارسال نشدن مقدار input به سمت Controller هنگام استفاده از تابع onkeyup

مشخصات سوال کننده :
کاربر : frisat     امتیاز کاربر : ‎−2     رتبه کاربر : 7123
دسته بندی : Asp.net Core جاوا اسکریپت

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3249
هوش مصنوعی

پاسخ هوش مصنوعی

مشکل شما مربوط به این است که هنگام استفاده از تابع `onkeyup`، مقدار ورودی تغییر می کند و این باعث می شود که ارسال داده به کنترلر مشکل ایجاد کند. برای حل این مشکل، می توانید از رویداد `oninput` به جای `onkeyup` استفاده کنید که هنگام تغییر محتوای ورودی (اعم از تایپ کردن یا کپی کردن) فراخوانی می شود. همچنین، باید مقدار دوباره به `this` نسبت دهید تا از ارسال مقدار جدید اطمینان حاصل شود.

<input type="text" oninput="this.value=itpro(this.value);" asp-for="@Model.person.HaghTaghzea">

این تغییر، اطمینان حاصل می کند که مقدار به روز شده به کنترلر ارسال می شود. حالا می توانید از تابع `itpro` خود به همان صورت استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 02:10 1400/05/12

مشکل بخاطر استفاده از دستورات جی کوئری یا جاوا اسکریپت نیست. شما پروژتون رو که اجرا می کنید دکمه F12 رو بزنید و در قسمت inspect element مطمئن بشید id و name تگ input شما مقدار یکسان دارن. به تصویر زیر دقت کنید :

استفاده از جی کوئری در core

 

با توجه به اینکه در قسمت asp-for مستقیم Model رو مشخص نکردید احتمالا این مشکل پیش میاد. دستور زیر رو تست کردم کاملا صحیح هست :

 

<form asp-controller="Home" asp-action="test1" method="post">
    <input type="text" name="HaghTaghzea" id="HaghTaghzea" onkeyup="javascript:this.value=itpro(this.value);">
    <button type="submit" class="btn btn-success">ارسال</button>
</form>

 

کدهای جاوا اسکریپت هم همون کدهای خود شماست. (جدا کردن 3 رقم 3 رقم اعداد در تگ input)

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
پاسخ دهنده : frisat 13:32 1400/05/12

اشتباه این بود که من نوع داده ای رو long گذاشته بودم و باید string باشه تا کاما رو قبول کنه

public long HaghTaghzea { get; set; }

اگر بخوام در جدول بصورت نوع long ذخیره بشه چه راه حلی هست ؟

[HttpPost]
public IActionResult submitPersons(Person person)
{
    var proMapped = _mapper.Map<Person>(person);
    _context.Add(proMapped);
    _context.SaveChanges();
    return RedirectToAction("allPerson");
}
<input type="text" onkeyup="javascript:this.value=itpro(this.value);" asp- 
for="@Model.person.HaghTaghzea">

 

ویرایش شده در سه شنبه 12 مرداد 1400 ساعت 17:55:21
به این پاسخ امتیاز بدهید    0
امتیاز: ‎−2 رتبه: 7123
1 نظر
saedbfd : شما میتونید همین مقدار string رو در کنترلر دریافت کنید و با دستور replace ویرگول ها رو حذف کنید و فقط عدد خالی رو نگهداری کنید و در دیتابیس ذخیره کنید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 05:56 1400/05/12
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود