Обновление информации Firebase о focusout с помощью contenteditable - PullRequest
0 голосов
/ 25 июня 2018

Я пытался обновить информацию профиля пользователя, которую они могут обновить в любое время. Я показываю информацию об их профиле, и я разрешаю им обновлять эту информацию с помощью contenteditable, но я не могу обновить информацию в Firebase.

Основной HTML:

<div class="white-container bottom-padding-fortypx container container-about margin-top-eightypx">

    <h6 class="margin-top-eightypx">company</h6>
    <h4 id="companyName" contenteditable="true"></h4>

    <h6>username</h6>
    <h4 id="username"></h4>

 </div>

JS:

firebase.auth().onAuthStateChanged((user) => {

  var userId = firebase.auth().currentUser.uid;
  firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
    $('#companyName').append('<p>' + snapshot.val().businessName + '</p>');
    $('#username').append('<p>' + snapshot.val().businessAddress + '</p>');
    $('#companyAddress').append('<p>' + snapshot.val().state + '</p>');

    var updatedInfo = document.getElementById('companyName');
    updatedInfo = updatedInfo.innerText;
    console.log(updatedInfo);

    var db = firebase.database();
    $('[contenteditable]').on('keypress focusout', function(en) {
      var currentUser = firebase.auth().currentUser;
      db.ref('users' + currentUser.uid).update({'businessName': updatedInfo});
    })
  });
})

Как вы можете видеть, я пытался обновить содержимое после того, как событие focusout произошло, когда пользователь щелкает из поля contenteditable, однако в Firebase не происходит никаких обновлений. Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 25 июня 2018

После некоторой работы я смог найти решение для моей проблемы выше (без изменений в моем HTML):

Javascript:

document.getElementById('name').addEventListener('focusout', function(e) {
   var updated = document.getElementById('name').value = this.innerText;
   // Getting rid of the new line characters, twice.
   if (updated[updated.length - 1] === '\n')
     updated = updated.slice(0, -2);
   // Pushing the updated profile information to their firebase profile
   db.ref('users/' + userId).update({
     'businessName': updated
   });
});

Я добавил / с тем, что предложил Фрэнк после «пользователей», что помогло, но использование innerTest с contenteditable добавило два переноса строк, поэтому я использовал этот фрагмент, чтобы избавиться от них:

if (updated[updated.length - 1] === '\n')
  updated = updated.slice(0, -2);

Теперь фактическое значение еще не обновлялось до нового значения, пока я не изменил «.on» на «.addEventListener» и немного изменил код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...