簡體   English   中英

無法在頁面加載時可靠地添加事件監聽器

[英]Can't add event listener at page load reliably

我似乎無法可靠地在頁面加載時添加這些事件偵聽器。 有些監聽器從一開始就起作用,但是其他的只有單擊幾次才能起作用。 可能是什么問題? 問題可能是我將本機JS與jQuery混合了嗎?

<script>
$(document).ready(function() {

function resetValidation() {
  jQuery('#contact-form').validate().resetForm();
};

function resetFormFields() {
  document.getElementById('contact-form').reset();
};

function removeValidationClasses() {
  jQuery('.control-group').removeClass('success').removeClass('error');
};

function changeHeaderToAdd() {
  document.getElementById('contactModalLabel').innerText = 'Add Contact';
};

function changeHeaderToUpdate() {
  document.getElementById('contactModalLabel').innerText = 'Update Contact';
};

function clearContactId() {
  document.getElementById('contactId').value = '';
};

  var ab = document.getElementById('addContactBtn');
  if (ab.addEventListener) {
    ab.addEventListener('click', resetValidation, false);
    ab.addEventListener('click', resetFormFields, false);
    ab.addEventListener('click', removeValidationClasses, false);
    ab.addEventListener('click', changeHeaderToAdd, false);
    ab.addEventListener('click', clearContactId, false);
  } else {
    ab.attachEvent('onclick', resetValidation);
    ab.attachEvent('onclick', resetFormFields);
    ab.attachEvent('onclick', removeValidationClasses);
    ab.attachEvent('onclick', changeHeaderToAdd);
    ab.attachEvent('onclick', clearContactId);
  };
  var ub = document.getElementById('updateContactBtn');
  if (ub.addEventListener) {
    ub.addEventListener('click', resetValidation, false);
    ub.addEventListener('click', resetFormFields, false);
    ub.addEventListener('click', removeValidationClasses, false);
    ub.addEventListener('click', changeHeaderToUpdate, false);
  } else {
    ub.attachEvent('onclick', resetValidation);
    ub.attachEvent('onclick', resetFormFields);
    ub.attachEvent('onclick', removeValidationClasses);
    ub.attachEvent('onclick', changeHeaderToUpdate);
  };
});
</script>

解決了!

JS很好。 但是,由於#updateContactBtn是動態創建的(頁面上的每個聯系人一個),因此該問題是由於存在非唯一ID引起的。 #updateContactBtn的第一個實例有效。

我將#updateContactBtn更改為.updateContactBtn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM