动态分配提交提交验证器

时间:2019-06-18 14:29:41

标签: javascript

在我的表格中,我有以下内容

<script>
function validate(form)
{
   if(form.xyz.value=='') return false;
   return true;
}
</script>

<form onsubmit="return validate(this)">
  <input name="xyz">
  <input type="submit" value="submit">
</form>

由于某种原因,我必须动态分配onsubmit侦听器。

我定义

document.forms[0].addEventListener('submit',validate);

但是如何动态实现return validate(this)

(我需要纯JavaScript,而不是jQuery)

2 个答案:

答案 0 :(得分:1)

传递给事件处理函数的第一个参数是the Event object。如果要传递其他值,则创建一个新函数并显式传递它。

function validateEventHandler(event) {
    return validate(this);
}

document.forms[0].addEventListener('submit',validateEventHandler);

…但是我会重写validate,以便它只使用this而不是form参数。

答案 1 :(得分:0)

根据对此信息JavaScript code to stop form submission的回答,我实现了event.preventDeafault()命令以防止在该字段为空时提交。

<form>
  <input name="xyz">
  <input type="submit" value="submit">
</form>

<script>
function validate(event)
{
  if(document.forms[0].xyz.value=='')
  { 
    alert('Mandatory field!');
    event.preventDefault();
  }
}
document.forms[0].addEventListener('submit',validate);
</script>