Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][Java][JavaScript] dynamiczna zmiana buttonu i pola input
Forum PHP.pl > Forum > Przedszkole
shpaque
Pomożecie? smile.gif

o ile button przeskakuje na "Anuluj" - to nie wraca i poza tym nic sie nie dzieje:

  1. <?php
  2. $countCats = count($catalog);
  3.  
  4. if ($countCats < 1)
  5. {
  6. echo "Ten klient nie ma dodanego żadnego katalogu.<br>";
  7. echo "<button class=\"btn btn-md text-center btn-submit\" type=\"submit\" name=\"addcat\"><b>Dodaj katalog</b></button>";
  8. }
  9. else
  10. {
  11. for ($i = 0; $i < $countCats; $i++)
  12. {
  13. $lp = $i+1;
  14.  
  15. echo "
  16. <div class=\"row\">
  17. <div class=\"col-sm-1\">
  18. <div class=\"form-group\">
  19. <label>Lp</label>
  20. <input class=\"form-control text-center\" type=\"text\" name=\"lp\" value=\"".$lp."\" disabled />
  21. </div>
  22. </div>
  23. <div class=\"col-sm-4\">
  24. <div class=\"form-group\">
  25. <label>Tytuł katalogu</label>
  26. <input class=\"form-control text-center\" type=\"text\" name=\"newCatalogTitle".$i."\" value=\"".$catalog[$i] -> title."\" required />
  27. </div>
  28. </div>
  29. <div class=\"col-sm-2\">
  30. <div class=\"form-group\">
  31. <label>Plik katalogu</label>
  32. <input class=\"form-control text-center\" type=\"text\" id=\"newCatalogFile".$i."\" name=\"newCatalogFile".$i."\" value=\"".$catalog[$i] -> file."\" required disabled />
  33. </div>
  34. </div>
  35. <div class=\"col-sm-1\">
  36. <div class=\"form-group\">
  37. <label></label>
  38. <button class=\"btn btn-md text-center btn-back\" type=\"button\" id=\"changeCatFile".$i."\" name=\"changeCatFile".$i."\" onclick=\"changeFile();\">Zmień plik</button>
  39. </div>
  40. </div>
  41. </div>
  42. ";
  43.  
  44. echo "
  45. <script>
  46. function changeFile(){
  47. $(document).ready(function(){
  48. if ($('#newCatalogFile".$i."').prop('type: text')){
  49. $('#changeCatFile".$i."').html('Zmień plik');
  50. $('#newCatalogFile".$i."').prop('type: text', 'disabled: true');
  51. }
  52. else{
  53. $('#changeCatFile".$i."').html('Anuluj');
  54. $('#newCatalogFile".$i."').prop('type: file', 'disabled: false');
  55. }
  56. });
  57. }
  58. </script>
  59. ";
  60. }
  61. }
  62. ?>
nospor
wywal to
$(document).ready(function(){

i staraj sie na przyszlosc doczytac co robia rzeczy ktorych uzywasz bo potem takie kwiatki
shpaque
teraz nawet button sie nie przelacza - w ogole nieaktywny
nospor
pokaz kod po zmianach

bo rozumiem ze oprocz
$(document).ready(function(){
wywaliles tez koncowke tej funkcji czyli jeden } oraz jeden ) ?
shpaque
  1. function changeFile(){
  2. if ($('#newCatalogFile".$i."').prop('type: text')){
  3. $('#newCatalogFile".$i."').prop('type: text', 'disabled: true');
  4. $('#changeCatFile".$i."').html('Zmień plik');
  5. }
  6. else{
  7. $('#newCatalogFile".$i."').prop('type: file', 'disabled: false');
  8. $('#changeCatFile".$i."').html('Anuluj');
  9. }
  10. });
  11. </script>
nospor
Jednak nie wywaliles..... tylle czasu z js sie bawisz i nawet do konsoli bledow nie zagladasz jeszcze?
trueblue
http://api.jquery.com/prop/
shpaque
to co tak? tez nie idzie

  1. function changeFile(){
  2. if ($('#newCatalogFile".$i."').prop('type: text')){
  3. $('#newCatalogFile".$i."').prop('type: text');
  4. $('#newCatalogFile".$i."').attr('disabled: true');
  5. $('#changeCatFile".$i."').html('Zmień plik');
  6. }
  7. else{
  8. $('#newCatalogFile".$i."').prop('type: file');
  9. $('#newCatalogFile".$i."').attr('disabled: false');
  10. $('#changeCatFile".$i."').html('Anuluj');
  11. }
  12. }
  13. </script>
nospor
Tak, wlasnie tak. Teraz przejdzmy dalej. Proste debugowanie:

Kod
                     function changeFile(){
                        if ($('#newCatalogFile".$i."').prop('type: text')){
alert("Widzisz 1?");
                           $('#newCatalogFile".$i."').prop('type: text');
                           $('#newCatalogFile".$i."').attr('disabled: true');
                           $('#changeCatFile".$i."').html('Zmień plik');
                        }
                        else{
alert("A moze widzisz 2?");
                           $('#newCatalogFile".$i."').prop('type: file');
                           $('#newCatalogFile".$i."').attr('disabled: false');
                           $('#changeCatFile".$i."').html('Anuluj');
                        }
                     }
shpaque
ale ja mam w konsoli pusto
nospor
Niemozliwe. Przy poprzednim kodzie gdzie zostawiles }) powinienies miec bledy w konsoli. Moze patrzysz nie na te konsole co trzeba... Ja mowie o konsoli przegladarki.

Niewazne, odpal debug co ci podalem
shpaque
nie mam alertow za to wyswietla mi tresc pod spodem:

  1. function changeFile(){ if ($('#newCatalogFile0').prop('type: text')){ alert("Widzisz 1?"); $('#newCatalogFile0').prop('type: text'); $('#newCatalogFile0').attr('disabled: true'); $('#changeCatFile0').html('Zmień plik'); } else{ alert("A moze widzisz 2?"); $('#newCatalogFile0').prop('type: file'); $('#newCatalogFile0').attr('disabled: false'); $('#changeCatFile0').html('Anuluj'); } }
nospor
facepalmxd.gif
No ale miales to dac w sekcji SCRIPT
shpaque
index.php?page=edit&id=227632&c=Brunner:287 Uncaught ReferenceError: changeFile is not defined
at HTMLButtonElement.onclick (index.php?page=edit&id=227632&c=Brunner:287)

oj kurde wkleilem calosc i wywalilo scripty

wywala od razu 2
nospor
Super, jak juz opanowales proste debugowanie to teraz sie wkoncu skup i zajrzyj do linka co podal trueblue bo zle uzywasz prop().
To po pierwsze
A po drugie masz totalnie zla logike:
jesli TYPE jest text to ustaw TYPE na text.
No przeciez to nie ma zadnego sensu.

Zebys lepiej zrozumial:
Jesli x to 3 to ustaw x na 3
w przeciwnym wypadku ustaw x na "nie3"
shpaque
  1. $( "input" ).change(function() {
  2. var $input = $( this );
  3. $( "p" ).html(
  4. ".attr( \"checked\" ): <b>" + $input.attr( "checked" ) + "</b><br>" +
  5. ".prop( \"checked\" ): <b>" + $input.prop( "checked" ) + "</b><br>" +
  6. ".is( \":checked\" ): <b>" + $input.is( ":checked" ) + "</b>" );
  7. }).change();


ok ale to musze inaczej cala funkcje zrobic czy co?
Neutral
Czy mógłbyś nakreślić, co dokładnie próbujesz osiągnąć?

Czy chodzi Ci o wzięcie wartości z input type checkbox?

Kod
var input = document.getElementsByTagName('input');
for(var i=0;i<input.length;i++) {
    input[i].addEventListener('change',function(e) {
        console.log(e.target.value);
    },false);
}
shpaque
nie,m to akurat byl przyklad.

chce za pomoca czegos takiego:

  1. function changeFile(){
  2. if ($('#newCatalogFile".$i."').attr('type: text')){
  3. $('#newCatalogFile".$i."').prop('disabled');
  4. $('#changeCatFile".$i."').html('Zmień plik');
  5. }
  6. else{
  7. $('#newCatalogFile".$i."').attr('type: file');
  8. $('#newCatalogFile".$i."').prop('disabled');
  9. $('#changeCatFile".$i."').html('Anuluj');
  10. }
  11. }
  12. </script>


zrobic zeby button #changeCatFile po kliknieciu zmienil inputa #newCatalogFile na "type=file" wylaczajac duisabled i po kliknieciu anuluj - spowrotem na type=text i disabled
Neutral
  1. <button id="changeCatFile">changeCatFile</button>
  2. <input type="text" id="newCatalogFile" disabled="disabled"/>


Kod
var i=0;
document.getElementById('changeCatFile').addEventListener('click',function() {
    
    if(i==0) {
        document.getElementById('newCatalogFile').setAttribute('type','file');
        document.getElementById('newCatalogFile').disabled = false;
        i=1;
    }else {
        document.getElementById('newCatalogFile').setAttribute('type','text');
        document.getElementById('newCatalogFile').disabled = true;
        i=0;
    }
    
},false);
Neutral
Kod
document.getElementById('changeCatFile').textContent = 'your new content';


Dlaczego zmieniłeś poprzedni kod, który Ci wysłałem? Ten Twój chyba nie działa.
shpaque
czyli teraz opcja mieszanka:

  1. var i = 0;
  2. document.getElementById('changeCatFile".$i."').addEventListener('click',function() {
  3. if (i == 0) {
  4. document.getElementById('newCatalogFile".$i."').setAttribute('type', 'file');
  5. document.getElementById('newCatalogFile".$i."').disabled = false;
  6. $('#changeCatFile".$i."').html('Anuluj');
  7. i = 1;
  8. }
  9. else {
  10. document.getElementById('newCatalogFile".$i."').setAttribute('type', 'text');
  11. document.getElementById('newCatalogFile".$i."').disabled = true;
  12. $('#changeCatFile".$i."').html('Zmień plik');
  13. i = 0;
  14. }
  15. }, false);
  16. </script>


czyli w pureJS + jQuery dziala smile.gif a jak to zrobic zeby bylo tylko jQ?
Neutral
Nie jestem jakimś zwolennikiem JQuery, wolałbym abyś pisał to w PURE JS, ale jeśli się tak uparłeś, to masz:

Kod
if (i == 0) {
   $('#newCatalogFile').attr('type','file');
   $('#newCatalogFile').attr('disabled',false);
   $('#changeCatFile').html('Cancel');
   i=1;
}


Chciałem się jeszcze zapytać, co znaczy te $i w kodzie.
shpaque
nr katalogu, bo to wszystko jest zapetlone w php

wycinek wyglada tak:

  1. <!-- Katalogi -->
  2. <div class="row">
  3. <div class="col-sm-12 text-center" id="catalogs">
  4. <p style="margin: 10px 0 20px 0;"><b><?php echo $customerName; ?> / Katalogi produktowe</b></p>
  5.  
  6. <?php
  7. $countCats = count($catalog);
  8.  
  9. if ($countCats < 1)
  10. {
  11. echo "Ten klient nie ma dodanego żadnego katalogu.<br>";
  12. echo "<button class=\"btn btn-md text-center btn-submit\" type=\"submit\" name=\"addcat\"><b>Dodaj katalog</b></button>";
  13. }
  14. else
  15. {
  16. for ($i = 0; $i < $countCats; $i++)
  17. {
  18. $lp = $i+1;
  19.  
  20. echo "
  21. <div class=\"row\">
  22. <div class=\"col-sm-1\">
  23. <div class=\"form-group\">
  24. <label>Lp</label>
  25. <input class=\"form-control text-center\" type=\"text\" name=\"lp\" value=\"".$lp."\" disabled />
  26. </div>
  27. </div>
  28. <div class=\"col-sm-4\">
  29. <div class=\"form-group\">
  30. <label>Tytuł katalogu</label>
  31. <input class=\"form-control text-center\" type=\"text\" name=\"newCatalogTitle".$i."\" value=\"".$catalog[$i] -> title."\" required />
  32. </div>
  33. </div>
  34. <div class=\"col-sm-3\">
  35. <div class=\"form-group\">
  36. <label>Plik katalogu</label>
  37. <input class=\"form-control text-center\" type=\"text\" id=\"newCatalogFile".$i."\" name=\"newCatalogFile".$i."\" value=\"".$catalog[$i] -> file."\" required disabled />
  38. </div>
  39. </div>
  40. <div class=\"col-sm-1\">
  41. <div class=\"form-group\">
  42. <label>Zmień plik</label>
  43. <button class=\"btn btn-md text-center btn-back\" type=\"button\" id=\"changeCatFile".$i."\" name=\"changeCatFile".$i."\" style=\"width: 100%;\"><span id=\"icon".$i."\" class=\"fa fa-exchange icon-md\"></span></button>
  44. </div>
  45. </div>
  46. </div>
  47. ";
  48.  
  49. // Przełącznik buttona zmianiającego pole dodawania pliku katalogu
  50. echo "
  51. <script>
  52. var i = 0;
  53. $('#changeCatFile".$i."').click(function() {
  54. if (i == 0) {
  55. document.getElementById('newCatalogFile".$i."').setAttribute('type', 'file');
  56. document.getElementById('newCatalogFile".$i."').disabled = false;
  57. $('#icon".$i."').html('Anuluj');
  58. i = 1;
  59. }
  60. else {
  61. document.getElementById('newCatalogFile".$i."').setAttribute('type', 'text');
  62. document.getElementById('newCatalogFile".$i."').disabled = true;
  63. $('#icon".$i."').html('Zmień plik');
  64. i = 0;
  65. }
  66. });
  67. </script>
  68. ";
  69. }
  70. }
  71. ?>
  72. </div>
  73. </div>
  74. <!-- Koniec katalogów -->





@EDIT


zmienilem wszystko na jquery i znow umarlo no i czego??

  1. var i = 0;
  2. $('#editCat".$i."').click(function() {
  3. if (i == 0) {
  4. $('#newCatalogFile".$i."').attr('type', 'file').attr('disabled', false);
  5. $('#icon".$i."').attr('class', 'fa fa-remove icon-md').attr('title', 'Anuluj zmianę pliku');
  6. $('#label-zmien".$i."').html('Anuluj');
  7. i = 1;
  8. }
  9. else {
  10. $('#newCatalogFile".$i."').attr('type', 'text').attr('disabled', true);
  11. $('#icon".$i."').attr('class', 'fa fa-exchange icon-md').attr('title', 'Kliknij w przycisk aby zmienić plik katalogu');
  12. $('#label-zmien".$i."').html('Zmień plik');
  13. i = 0;
  14. }
  15. });
  16. </script>


no dobra zla zmienna. Temato do zamkniecia dziekuje
Neutral
Pozmieniaj sobie te apostrofy/cudzysłowy, tam gdzie masz zmienne, na to:

Kod
var i=0;
$('#editCat'.$i).click(function() {
    if(i==0) {
        $('#newCatalogFile'.$i).attr('type', 'file').attr('disabled', false);
        $('#icon'.$i).attr('class', 'fa fa-remove icon-md').attr('title', 'Anuluj zmianę pliku');
        $('#label-zmien'.$i).html('Anuluj');
        i=1;
    }else {
        $('#newCatalogFile'.$i).attr('type', 'text').attr('disabled', true);
        $('#icon'.$i).attr('class', 'fa fa-exchange icon-md').attr('title', 'Kliknij w przycisk aby zmienić plik katalogu');
        $('#label-zmien'.$i).html('Zmień plik');
        i=0;
    }  
});


Pamiętaj, że JavaScript jest case-sensitive.
Cytat
JavaScript is case-sensitive and uses the Unicode character set.

W języku JavaScript jest rozróżniana wielkość liter i używany jest zestaw znaków Unicode.
Przetłumaczył:
https://translate.google.com/?hl=en&tab=TT.
Poczytaj:
https://developer.mozilla.org/en-US/docs/We...ammar_and_types.

Czyli zamiast tego function, nie możesz napisać tak: FUNCTION, bo wtedy parser JS nie dowie się, że chodzi Ci o funkcję, a nie o coś innego.
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.