为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript函数,可以验证网页上的多个表单

JavaScript函数,可以验证网页上的多个表单

PHP
富国沪深 2022-08-05 09:37:06
如果这是一个简单的问题,请道歉,因为我对JavaScript还很陌生。我有一个脚本,通过检查文本字段是否为空来验证用户输入。如果它不是空的,则确认窗口会提示用户确保在提交表单和上载信息之前继续操作。我想知道如何使用下面的代码或类似代码在同一页面上验证多个表单,因为目前我只能让它与一个表单一起使用?我尝试过各种解决方案,但没有一个成功。我甚至尝试复制/粘贴整个脚本并更改其中的相关元素。我已经将我对代码的更改剥离回它实际正常工作的位置。就像我说的,一旦我尝试重用它来验证多个表单,代码就会停止正常工作。// Set up event handlers in JavaScriptdocument.querySelector('form').addEventListener('submit', validationCheck);document.getElementById('updateEventTitle').addEventListener('keyup', validationCheck);// Get your DOM references just once, not every time the function runslet eventTitle = document.getElementById('updateEventTitle');let btnUpdate = document.getElementById('updateBtn');function validationCheck(event) {  if (eventTitle.value === '') {    btnUpdate.disabled = true;  } else {    btnUpdate.disabled = false;    //Confirmation window    if (event.type === 'submit') {      //Confirmation window      var r = confirm('Do you want to update this item?');      if (r == true) {        window.location.href = 'server.php';      } else {        event.preventDefault();      }    }  }}我想要一个能够验证页面上任何HTML的脚本,而不仅仅是第一个。form
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

我们只需获取所有表单,循环,获取每个表单所需的输入和按钮,并为每个表单,每个元素设置侦听器。


下面是一个代码片段,解释了如何做到这一点。


// getting all forms

const elForms = [...document.querySelectorAll('form')];


// looping an array

elForms.map(elForm => {

  // Get your DOM references just once, not every time the function runs

  const elInput  = elForm.querySelector(`input[type='text']`);

  const elButton = elForm.querySelector(`input[type='submit']`);


  // Set up event handlers in JavaScript

  elForm.addEventListener('submit', (event) => validationCheck(event, elInput, elButton)); // passing parameters

  elInput.addEventListener('keyup', (event) => validationCheck(event, elInput, elButton)); // passing parameters

});


function validationCheck(event, elInput, elButton) {

    if(elInput.value==='') { 

        elButton.disabled = true; 

    } else { 

        elButton.disabled = false;


        //Confirmation window

        if(event.type === 'submit'){

            //Confirmation window

            var r =confirm('Do you want to update this item?');

            if (r==true)    {

                window.location.href = 'server.php';

            } else {

                event.preventDefault();

            }

        }

    }

}

<form action='editevent.php?updaterow=$iddata' method='POST' id='updateEventTitle'>

     <input type='text' id='updateEventTitle' name='myUpdateEventTitle' size='30' maxlength='40' placeholder='$row[eventName]' required>

     <input class='btn btn-primary btn-sm' type='submit' name='updateEventTitle' value='Update' id='updateBtn' disabled> 

</form>


<form action='editevent.php?updaterow=$iddata' method='POST' id='updateEventDate'>

     <input type='text' id='updateEventDate' name='myUpdateEventDate' size='15' maxlength='10' placeholder=$eventDate required/> 

     <input class='btn btn-primary btn-sm' type='submit' name='updateEventDate' value='Update' id='updateBtn' disabled> 

</form>


<form action='editevent.php?updaterow=$iddata' method='POST' id='updateEventTime'>

     <input type='text' id='updateEventTime' name='myUpdateEventTime' size='15' maxlength='5' placeholder=$eventTime required/> 

     <input class='btn btn-primary btn-sm' type='submit' name='updateEventTime' value='Update' id='updateBtn' disabled> 

</form>


回答后


您的示例中存在重复id


<form action='editevent.php?updaterow=$iddata' method='POST' id='updateEventTitle'>

  <input type='text' id='updateEventTitle'

这是无效的,可能会在将来导致问题。 应该是唯一的。id


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信