محمد صدرا
1 سال پیش توسط محمد صدرا مطرح شد
8 پاسخ

جلو گیری از رفررش شدن صفحه وب

من یک فرم دارم که یک رشته ای رو از کار بر میگیره و پس از استفاده از دکمه داخل فورم قراره اونو برام پردازش کنه بدون اینکه صفحه رفرش بشه . من از این روش استفاده کردم ولی کار نمی کنه
html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web App</title>
    <link rel="stylesheet" href="./stayle.css">
</head>
<body>
    <div class="main">
        <h1>
            فروشگاه آنلاین 
        </h1>
        <form class="PR">
            <input type="text" name="PTitle" id="inp"><br>
            <button id="add">افزودن محصول</button>
        </form>
    </div>
</body>

java

let Form = document.querySelector(".PR");
form.addEventListener("submit", e => {
    e.preventDefault()
});

ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

دوست خوبم شما فایل جاوا اسکریپتت رو لینک نکردی اصلا
شک نکن مشکل از ارتباط صفحه با فایل جاوا اسکریپته
توی html که قرار دادی که من نمیبینم اگر اخر فایل هم هست مطمینن ادرسی چیزی اشتباه کردی که فایل لود نمیشه و کار نمیکنه
کد زیر رو کپی کن توی یک صفحه خالی و ببین به راحتی کار میکنه
همون کد خودته تست کردم و هیج مشکلی در دریافت اطلاعات به این شکل نداری

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div class="main">
      <h1>فروشگاه آنلاین</h1>
      <form class="PR" action="/test" method="get">
        <input type="text" name="PTitle" id="inp" /><br />
        <button id="add">افزودن محصول</button>
      </form>
    </div>
  </body>
  <script>
    let form = document.querySelector(".PR");
    form.addEventListener("submit", (e) => {
      e.preventDefault();
      const formData = new FormData(e.target);
      const formProps = Object.fromEntries(formData);
      console.log(formProps.PTitle);
      console.log("my submit code works fine");
    });
  </script>
</html>

دولوپر باهوش
@devbrain 1 سال پیش مطرح شد
0

سلام
باید با ajax اینکارو انجام بدی


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 1 سال پیش مطرح شد
1

سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨

مشکل اصلی در کدت توی اسم متغیر JavaScript هست. شما از Form بجای form استفاده کردی. همچنین، تا زمانی که شما از طریق دکمه "افزودن محصول" فرم را ارسال نکنی، تغییری در صفحه اتفاق نمی‌افته. برای این کار، باید کدی بنویسی که وقتی دکمه افزودن محصول فشرده میشه ، مقدار ورودی رو پردازش کنه.

در زیر یک نمونه از کد JavaScript ویرایش کردم برات

let form = document.querySelector(".PR");
let input = document.getElementById("inp");

form.addEventListener("submit", e => {
    e.preventDefault();

    // در اینجا میتونی کد پردازش مقدار ورودی رو انجام بدی
    let inputValue = input.value;

    // مثال: نمایش مقدار ورودی در کنسول
    console.log("مقدار ورودی: " + inputValue);

    // اینجا می‌توانید کدی بنویسید تا مقدار ورودی را پردازش کند و صفحه را به روز کند بدون رفرش کردن
});

در اینجا inputValue متغیری هست که مقدار ورودی را دریافت می‌کنه و شما میتونی کد پردازش مورد نظر خود را در قسمت مشخص شده قرار بدی . بعد از پردازش، میتونی اطلاعات را به صفحه اضافه کنی یا نمایش بدی بدون اینکه صفحه رفرش بشه.

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


محمد صدرا
تخصص : طراحی سایت با وردپرس / با کد ن...
@mohammadsadra 1 سال پیش مطرح شد
0

سلام
بله در استفاده از متغییر ها اشتباهی رخداده بود ولی همچنان مشکل وجود دارد و هیچ چیزی رو لاگ نمیکنه
من حتی از این کد هم استفاده کردم
JS

 document.querySelector('#PR').addEventListener('click', function(e){
    console.log(e.target.elements.PTitle.value)
    e.target.elements.PTitle.value=''
 })

محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

شما کلاس PR دارید که با دات یا همون نقطه باید پشتش مشخص کنی در کوئری سلکتور ولی اومدی شارپ گزاشتی
بخش زیر

document.querySelector(".PR")

محمد صدرا
تخصص : طراحی سایت با وردپرس / با کد ن...
@mohammadsadra 1 سال پیش آپدیت شد
0

سلام در اینجا غلط گرامری داشتم
ولی در کل ها درست انجام میدم
ولی همچنان مشکل و جود دارد


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

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

function handleSubmit(e) {
  e.preventDefault();
  const formData = new FormData(e.target);
  const formProps = Object.fromEntries(formData);
}

شما وقتی داری فرم رو prevdefault میکنی عملا نیاز نداری فرم داشته باشی حتی و یک دکمه میزاری و onclick تعریف میکنی تمام
(توی این لیک اگر ببینی بعد از سابمیت شدن فرم اومده و از ایدی استفاده کرده و داده هاشو گرفته که چیز اشتباهی هم نیست)
حالا ب هر دلیل شما باز هم بعد از سابمیت میتونی با id بیایی و value مربوط به input رو دریافت کنی
و یا به روش بالا فرم رو داده های توش رو یکجا بگیری که به نظرم کار کنه و مشکلی توش نباشه
شما e.target رو console.log بگیر به جای اون چیزی که لاگ گرفتی ببین مشکلی نداشته باشی اصلا سابمیت بشه فرمت
ممکنه نیاز باشه دکمت type='submit' بگیره که سابمیت شه شاید مشکل از لاگ نیست و اصلا سابمیت نمیکنی
یه لاگ ساده بگیر مثلا console.log('hi') ببین اصلا وارد سابمیت میشی یا نه


محمد صدرا
تخصص : طراحی سایت با وردپرس / با کد ن...
@mohammadsadra 1 سال پیش مطرح شد
0

نه console log یک رسته هم گرفتم کار نمر درجا صفحه رفرش شد ادرس بار تغییر کرد و چیزی در کونسول نمایش داده نشد


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

دوست خوبم شما فایل جاوا اسکریپتت رو لینک نکردی اصلا
شک نکن مشکل از ارتباط صفحه با فایل جاوا اسکریپته
توی html که قرار دادی که من نمیبینم اگر اخر فایل هم هست مطمینن ادرسی چیزی اشتباه کردی که فایل لود نمیشه و کار نمیکنه
کد زیر رو کپی کن توی یک صفحه خالی و ببین به راحتی کار میکنه
همون کد خودته تست کردم و هیج مشکلی در دریافت اطلاعات به این شکل نداری

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div class="main">
      <h1>فروشگاه آنلاین</h1>
      <form class="PR" action="/test" method="get">
        <input type="text" name="PTitle" id="inp" /><br />
        <button id="add">افزودن محصول</button>
      </form>
    </div>
  </body>
  <script>
    let form = document.querySelector(".PR");
    form.addEventListener("submit", (e) => {
      e.preventDefault();
      const formData = new FormData(e.target);
      const formProps = Object.fromEntries(formData);
      console.log(formProps.PTitle);
      console.log("my submit code works fine");
    });
  </script>
</html>

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام