اذهب إلى المحتوى

السؤال

نشر
<form>
        <label for="number">Enter 7-digit number:</label>
        <input type="text" id="number" name="number" maxlength="7">
        <button type="submit" onclick="redirect()">Submit</button>
      </form>
      <script>
         function redirect() {
      var number = document.getElementById("number").value;
      var url = "";
      switch (number) {
        case "1111111":
          url = "https://google.com/";
          break;
        case "2222222":
          url = "https://youtube.com/";
          break;
        case "3333333":
          url = "https://twitter.com/";
          break;
        case "4444444":
          url = "https://facebook.com/";
          break;
        case "5555555":
          url = "https://rraass852.com/";
          break;
        case "6666666":
          url = "https://meta.com/";
          break;
        case "7777777":
          url = "https://tesla.com/";
          break;
        default:
          var error = document.createElement("div");
          error.style.cssText = "font-size:1.2em; padding:20px; background-color:red; color:white; text-align:center;";
          error.innerHTML = "Invalid number, please enter a valid number";
          document.body.appendChild(error);
          setTimeout(function() {
            document.body.removeChild(error);
          }, 3000);
          return;
      }
      window.location.href = url;
    }
    </script>

أملك كود الجافا سكربت هذا كتبته يعني لكن المشكلة أن صندوق الخطأ لا يقف 3 ثواني بل يقف أقل من جزء الثانية :) 
وأيضا عند إدخال الرقم لا يتم أخذي إلى الرابط الخاص به

Recommended Posts

  • 0
نشر

يمكنك تعديل الكود للشكل التالي :

 

<form>
  <label for="number">Enter 7-digit number:</label>
  <input type="text" id="number" name="number" maxlength="7" />
  <!-- عدل استدعاء الوظيفة من هنا -->
  <button type="submit" id="submit" onclick="redirect(event)">Submit</button>
</form>
<script>
  // قم بإضافات البراميتر
  function redirect(e) {
    // قم بإضافة الكود التالي
    e.preventDefault();
    var number = document.getElementById("number").value;
    var url = "";
    switch (number) {
      case "1111111":
        url = "https://google.com/";
        break;
      case "2222222":
        url = "https://youtube.com/";
        break;
      case "3333333":
        url = "https://twitter.com/";
        break;
      case "4444444":
        url = "https://facebook.com/";
        break;
      case "5555555":
        url = "https://rraass852.com/";
        break;
      case "6666666":
        url = "https://meta.com/";
        break;
      case "7777777":
        url = "https://tesla.com/";
        break;
      default:
        var error = document.createElement("div");
        error.style.cssText =
          "font-size:1.2em; padding:20px; background-color:red; color:white; text-align:center;";
        error.innerHTML = "Invalid number, please enter a valid number";
        document.body.appendChild(error);
        setTimeout(function () {
          document.body.removeChild(error);
        }, 3000);
        return;
    }
    window.location.href = url;
  }
</script>

 

  • 0
نشر

المشكلة في الكود وهي ليست مشكلة بالفعل حيث أنه السلوك الطبيعى لل javascript حيث أن ال submit يجب أن يتم عمل reload للصفحة وذلك الطبيعي ولمنع هذا السلوك يمكنكنا إضافة الدالة preventDefault كما في التعليق السابق

ويمكننا أيضاً إضافة هذه الدالة لل button بشكل أبسط كالتالي 

<button type="submit" onclick="event.preventDefault(); redirect()">Submit</button>

ويمكن استبدال هذه الدالة بال return: false لل form ولكن يفضل استخدام ال preventDefault

وإذا كنت تريد دعم المتصفحات القديمة ليعمل الموقع بشكل سليم على جميع المتصفحات يمكننا إضافة هذا الكود

في الكود الموجود في التعليق السابق نستبدل

e.preventDefault();

ب

if (e.preventDefault) {
    e.preventDefault();
  } else {
    e.returnValue = false;
  }

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...