插件窝 干货文章 使用 JavaScript 的动态按钮 UI onclick

使用 JavaScript 的动态按钮 UI onclick

strong 表单 输入 提交 449    来源:    2024-10-21

第三天

#100daysofmiva 编码挑战已经过去三天了。 ???

今天,我没有在后端做任何事情。我需要加强我的前端技能。我将使用 javascript 进行简单的按钮用户体验设计。您是否曾经在任何网站或应用程序上提交过表单,而不仅仅是等待响应,您可以看到这些精美的文本在您单击的按钮上发生变化。

这就是我今天要编码的内容。走吧!???

我们将使用基本的 html 和动态 js 开发客户端(也称为前端)。

立即学习“Java免费学习笔记(深入)”;

超文本标记语言

对于 html,我编写了一个带有一个输入和一个提交按钮的基本表单。

<div>    
<h2>button ui</h2>  
  <div id="message"></div>   
  <form id="linkform" onsubmit="submitform(event)">     
     <label for="rand_word">enter random word</label>   
          <input type="text" id="rand_word" name="rand_word" placeholder="e.g what is life?" required><button type="submit" id="submitbutton">submit</button>  
   </form>
</div>

此表单是一个简单的 html 结构,允许用户输入随机单词并提交。以下是每个元素的细分:

1.
  • 用途:充当表单及其相关元素的容器。
  • 内容: - 标有“按钮 ui”的标题 (

    )。

  • 消息区域(
    ),表单提交后向用户显示反馈。 - 实际表单(
    ),其中包含一个输入字段和一个提交按钮。

    2.

    按钮 ui

  • 用途:为包含表单的页面部分提供标题。
  • 文字:“按钮 ui”。

3.

  • 用途:此 div 用于向用户显示消息,例如在提交表单后确认他们输入的内容。最初,它是空的并且可能被隐藏,但它将填充文本并在表单提交后显示。

4.

  • 用途:这是将输入字段和提交按钮组合在一起的表单元素。

属性

  • id="linkform":为表单提供唯一标识符,以便可以在 javascript 中引用。
  • onsubmit="submitform(event)":指定提交表单时要调用的 javascript 函数。 submitform(event) 函数旨在处理表单提交过程并防止重新加载页面的默认行为。

5.

  • 用途:为输入字段提供标签,通过指示用户应输入的内容来提高可访问性。
  • 属性: - for="rand_word":将标签与 id="rand_word" 的输入字段关联起来。
  • 文字:“输入随机单词”。

6.

  • 用途:这是用户输入随机单词的输入字段。

属性

  • type="text": 表示这是一个文本输入字段。
  • id="rand_word":为输入提供唯一标识符,将其链接到标签并允许在 javascript 中引用它。
  • name="rand_word": 这是提交表单时将发送的表单数据密钥的名称。
  • placeholder="e.g what is life?":在用户输入任何内容之前在输入字段内提供提示,建议他们可能输入的内容的示例。
  • required:使此字段成为必填字段,这意味着在用户输入某些内容之前无法提交表单。

7.

  • 用途:这是用户点击提交表单的按钮。

属性

  • type="submit": 表示点击此按钮将提交表单数据。
  • id="submitbutton": 为按钮提供唯一标识符,因此可以通过 javascript 轻松访问和修改。
  • 文本:“提交”——这是按钮上显示的文本。

html 概要

  • 用户交互:用户在输入字段中输入随机单词,然后单击“提交”按钮。提交表单时,将调用 submitform(event) javascript 函数,该函数处理提交过程(例如,显示消息、防止页面重新加载、可能将数据发送到服务器)。
  • 用途:此表单可用于各种目的,例如收集用户输入、与后端服务交互,甚至只是在用户界面中演示表单处理。

javascript

<!-- JavaScript Code -->  
  <script>    
  function submitForm(event) {      
    event.preventDefault(); // Prevent the form from submitting the default way
    const formData = new FormData(document.getElementById('linkForm'));       
    const submitButton = document.getElementById('submitButton');        
    const message = document.getElementById('message');        
    const randWord = formData.get('rand_word'); // Get the value of the rand_word field
    let dotCount = 0;        
    const updateDots = () => {        
        dotCount = (dotCount + 1) % 4;           
        return '.'.repeat(dotCount);       
    };
    const baseMessages = [            
       "Submitting",            
       "Still working on it",            
       "Hold on",            
       "Almost done"        
    ];
    submitButton.innerText = `${baseMessages[0]}${updateDots()}`;        
    submitButton.classList.add('submitting');        
    submitButton.disabled = true;        
    message.style.display = 'none'; // Hide the message box initially
        // Generate a random delay between 1 and 10 seconds        const delay = Math.floor(Math.random() * 9000) + 1000;
        if (delay > 2000) {        
            let messageIndex = 0;                        
            const messageInterval = setInterval(() => {              
              submitButton.innerText = `${baseMessages[messageIndex]}${updateDots()}`;                
              if (dotCount === 0) {                  
                messageIndex = (messageIndex + 1) % baseMessages.length;                
              }            
            }, 500);   // Clear the interval after the delay to stop the loop            
            setTimeout(() => clearInterval(messageInterval), delay - 500);        
            }
        // Simulate a wait time of random delay        
        setTimeout(() => {            message.innerText = 'You typed: ' + randWord; // Show the submitted data in the message box            
        message.style.display = 'block';
            submitButton.innerText = 'Submitted';            
            submitButton.classList.remove('submitting');            
            submitButton.classList.add('submitted');
            // Reset the button state after 2 seconds            
            setTimeout(() => {                submitButton.innerText = 'Submit';                
            submitButton.classList.remove('submitted');                submitButton.disabled = false;            
            }, 4000);
            document.getElementById('linkForm').reset(); // Reset the form fields        
            }, delay); // Wait for the random delay before showing the message    
            }</script>

此 javascript 代码处理表单提交过程,通过使用动画点和更改消息模拟动态等待期来提供增强的用户体验。

下面是结果

使用 JavaScript 的动态按钮 UI onclick

作为后端开发人员,我遇到的唯一问题是让点动画化。这花了一段时间,但我能够克服它。我期待着明天的编码??

点击此处预览最终结果 https://app.marvelly.com.ng/100daysofmiva/day-3/

推荐文章

热门文章