Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Nie czyści inputa
Forum PHP.pl > Forum > Przedszkole
Johnas
Witam, cały czas jestem w trakcie rozwijania swojego własnego skryptu forum... Aktualnie natknąłem się na problem tego typu że podczas pisania wiadomości których działanie jest podobne do działania tego na facebooku (podczas wysyłania strona się nie odświeża) i z wysyłaniem wiadomości wszystko przebiega prawidłowo. Problem natomiast pojawia się z inputem w który wpisuje się wiadomości... nie wiem dlaczego, ale nie chce się on odświeżyć, tak jakby przez to że strona została wyświetlona javascriptem sprawiało że nie mogę kontrolować tego elementu... Czy da się to jakoś obejść ? Wiem że na pewno jest na to jakiś sposób.



Skrypt odpowiedzialny za wysyłanie wiadomości:
[JAVASCRIPT] pobierz, plaintext
  1. $("#newMessage").submit(function() {
  2. var username = $("#username").val();
  3. var message = $("#message").val();
  4.  
  5. var type = $("#username").attr('type');
  6. if (type == "text") {
  7. // Zadania dla pierwszej wiadomości
  8. $("#username").prop('type', 'hidden');
  9. setUsername(username);
  10. $("#newMessageLink").show();
  11. }
  12.  
  13. $("#showMessage").append( '<div style="margin-top:10px;width:100%;min-height:45px;"><img src="{if $profile.avatarBy eq 0}{if $profile.avatar|count_characters}{$config->domain}/{$profile.avatar}{else}{$config->domain}/images/avatar.png{/if}{else}{$profile.avatar}{/if}" style="width:45px; height:45px; float:left;"><a href="profile/{changeSpecialCharsURL($user->username)}" style="float:left; margin-left:5px;">{$user->username}</a><br><span style="float:left;margin-left:5px;width: 92%;">'+message+'</span></div>' );
  14.  
  15. // Scrolowanie na dół
  16. var elem = document.getElementById('showMessage');
  17. elem.scrollTop = elem.scrollHeight;
  18.  
  19. // Wysyłanie wiadomości
  20. var formData = "send=true&message="+message+"&to="+username; //Array
  21. $.ajax({
  22. url : "sendMessage.php",
  23. type: "POST",
  24. data : formData,
  25. success: function(data, textStatus, jqXHR)
  26. {
  27. //data - response from
  28. $("#message").removeAttr( "value" );
  29. return false;
  30. },
  31. error: function (jqXHR, textStatus, errorThrown)
  32. {
  33. return false;
  34. }
  35. });
  36. $("#message").removeAttr( "value" ); // czyścimy okienko
  37. return false;
  38. });
[JAVASCRIPT] pobierz, plaintext
Star
A nie lepiej zrobić coś takiego? :
  1. $("#message").val('');
Comandeer
Zdecydowanie lepiej, bo zgodnie ze standardem DOM atrybut [value] odzwierciedla tak naprawdę domyślną wartość pola – stąd niekoniecznie jego zmiana wpłynie na samo pole.
Star
Comandeer,a co myslisz o takim rozwiazaniu ->
  1. $("#messages").prop('value', ' ');
?
Działa, jednak czy jest to poprawne ?
Comandeer
No poprawne, bo zmienia własność, nie atrybut. Niemniej po co, skoro $.fn.val robi to samo? wink.gif
Johnas
Jednak to nie pomaga... sam nie mam pomysłu dlaczego, tak jakby nie widziało elementu, albo nie wiem co...

  1. <div style="padding-right:30px;">
  2. <input type="text" name="to" style="width:100%;" id="message" class="form-control input-txt" placeholder="Napisz wiadomość" autocomplete="off">
  3. </div>



to jest kod od wpisywania wiadomości, który jest pobierany i wrzucany za pomocą skryptu... no i w <script type="text/javascript"></script>

[JAVASCRIPT] pobierz, plaintext
  1. $("#newMessage").submit(function() {
  2. var username = $("#username").val();
  3. var message = $("#message").val();
  4.  
  5. var type = $("#username").attr('type');
  6. if (type == "text") {
  7. // Zadania dla pierwszej wiadomości
  8. $("#username").prop('type', 'hidden');
  9. setUsername(username);
  10. $("#newMessageLink").show();
  11. }
  12.  
  13. $("#showMessage").append( '<div style="margin-top:10px;width:100%;min-height:45px;"><img src="{if $profile.avatarBy eq 0}{if $profile.avatar|count_characters}{$config->domain}/{$profile.avatar}{else}{$config->domain}/images/avatar.png{/if}{else}{$profile.avatar}{/if}" style="width:45px; height:45px; float:left;"><a href="profile/{changeSpecialCharsURL($user->username)}" style="float:left; margin-left:5px;">{$user->username}</a><br><span style="float:left;margin-left:5px;width: 92%;">'+message+'</span></div>' );
  14.  
  15. // Scrolowanie na dół
  16. var elem = document.getElementById('showMessage');
  17. elem.scrollTop = elem.scrollHeight;
  18.  
  19. // Wysyłanie wiadomości
  20. var formData = "send=true&message="+message+"&to="+username; //Array
  21. $.ajax({
  22. url : "sendMessage.php",
  23. type: "POST",
  24. data : formData,
  25. success: function(data, textStatus, jqXHR)
  26. {
  27. //data - response from
  28. $("#message").val('');
  29. return false;
  30. },
  31. error: function (jqXHR, textStatus, errorThrown)
  32. {
  33. return false;
  34. }
  35. });
  36. $("#message").val(''); // czyścimy okienko
  37. return false;
  38. });
[JAVASCRIPT] pobierz, plaintext


i ten kod działa jeżeli wejdzie się na tą stronę z odświeżeniem, ale jeżeli załaduje się stronę przez skrypt to już nie chce czyścić okienka...

A nie, jednak działa... plik mi się nie wysłał przez ftp... dziękuje smile.gif
Star
Cytat(Comandeer @ 26.03.2016, 21:01:48 ) *
No poprawne, bo zmienia własność, nie atrybut. Niemniej po co, skoro $.fn.val robi to samo? wink.gif


jasne, pytalem z ciekawosci :-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.