【问题标题】:onclick event not working for multiple functions togetheronclick 事件不能同时用于多个功能
【发布时间】:2021-02-04 13:11:32
【问题描述】:

点击事件

<button type="submit" value="submit" class="login100-form-btn" onClick="this.validate-input">
Create Account
</button>

<button type="submit" value="submit" class="login100-form-btn" onClick="this.disabled=true">
Create Account
</button>

单独工作,但

<button type="submit" value="submit" class="login100-form-btn" onClick="this.validate-input; this.disabled=true">
Create Account
</button>

不能一起工作。请建议我该怎么做

  • 验证输入。
  • 单击后禁用按钮。 一起

编辑

我已从 colorlib.com 下载此代码。当我一起单击提交按钮两次时,它会出错。所以我想在点击后禁用提交按钮。

请查看我的 jQuery

var input = $('.validate-input .input100');

$('.validate-form').on('submit', function() {
  var check = true;

  for (var i = 0; i < input.length; i++) {
    if (validate(input[i]) == false) {
      showValidate(input[i]);
      check = false;
    }
  }

  return check;
});


$('.validate-form .input100').each(function() {
  $(this).focus(function() {
    hideValidate(this);
  });
});

function validate(input) {
  if ($(input).attr('type') == 'email' || $(input).attr('name') == 'email') {
    if ($(input).val().trim().match(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{1,5}|[0-9]{1,3})(\]?)$/) == null) {
      return false;
    }
  } else {
    if ($(input).val().trim() == '') {
      return false;
    }
  }
}

function showValidate(input) {
  var thisAlert = $(input).parent();

  $(thisAlert).addClass('alert-validate');
}

function hideValidate(input) {
  var thisAlert = $(input).parent();

  $(thisAlert).removeClass('alert-validate');
}

【问题讨论】:

  • 函数名后面需要()才能调用函数。但是validate-input 不是一个允许的函数名。
  • - 是减法运算符。 this.validate-input 是从 this.validate 中减去 input 的值。
  • 我不相信第一个 sn-p 自己工作。
  • 我已经添加了我的 jquery。请检查一下。
  • 如果您使用传统的表单提交回服务器,禁用提交按钮会导致问题。

标签: javascript jquery forms onclick submit-button


【解决方案1】:

您可以在验证功能中添加禁用提交按钮。

$('.validate-form').on('submit', function() {
  var check = true;

  for (var i = 0; i < input.length; i++) {
    if (validate(input[i]) == false) {
      showValidate(input[i]);
      check = false;
    }
  }
  if (check) {
    $(this).find(":submit").prop("disabled", true);
  }
  return check;
});

【讨论】:

  • 按钮没有被禁用:(点击多次仍然会导致获得多个条目。
  • 现在尝试使用不同的属性值。
  • setAttribute ??那是 jQuery 吗?应该是.prop()
  • 不,应该是.attr()
  • 真的吗? api.jquery.com/prop 让我们阅读文档中所说的 “属性通常会影响 DOM 元素的动态状态,而不会更改序列化的 HTML 属性。示例包括输入元素的 value 属性、输入和按钮的 disabled 属性或选中复选框的属性。.prop() 方法应该用于设置禁用 并检查而不是 .attr() 方法。.val() 方法应该是用于获取和设置值。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 2015-06-29
  • 2011-02-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多