Cum pentru a imprima text de la aceeași intrare, generate dinamic de mai multe ori cu Jquery și Balon

0

Problema

Sunt în curs de dezvoltare o aplicație cu Jquery și Balon care generează intrări de tip text dinamic, făcând clic pe un respective buton radio, atunci cererea trebuie să captura textul de la fiecare intrare și de imprimare-l la partea de jos a ecranului. Când am genera doar o singură intrare de la un buton radio cu un "nume" stabilite după cum urmează, aplicația funcționează perfect:

$('#Entradas').append('<input type="text" id="name2" name="message1" placeholder="Ingresa tu mensaje">')

Dar pentru că pot genera mai multe intrări de la același buton radio, am nevoie de un fel de parametrul "nume" fi variabilă sau auto-increment de fiecare dată de intrare este generat cu radio buton, astfel încât atunci când prelucrate de cod în Balon se poate imprima texte de toate de intrare care au fost generate. Cu codul de mai jos, am genera două tipuri de intrări, primul cu nume de variabilă și cel de-al doilea cu fix numele, intrare cu fix numele imprimă perfect, dar două intrări cu nume de variabilă printuri-le ca "Nici unul".

HTML-Javascript (InsertarFlask3.html)

<script type=text/javascript>
            
        var i=0;
    
    $(document).ready(function(){
                
        $("#der-iz").click(function(){
            
            var i = i+1;

             $('#Entradas').append('<textarea type="text" id="name" name= "(i)" placeholder="Type 
             your message">');   //Input with name variable. It does not work.

             $('#Entradas').append("<br>");  

        })

        $("#ab-ar").click(function(){
             $('#Entradas').append('<input type="text" id="name2" name="message2" 
             placeholder="Type your message">');  //Input with name fixed. It works.

             $('#Entradas').append("<br>");
            
            
        })

        $(function() {
              $('a#process_input').bind('click', function() {
                $.getJSON('/background_process', {
                  mess1: $('textarea[name="1"]').val(),
                  mess2: $('textarea[name="2"]').val(),
                  message2: $('input[name="message2"]').val()
                }, function(data) {
                  $("#result").text(data.result);
                  $("#result").append("<br>");
                  $("#result").append(data.result1);
                  $("#result").append("<br>");
                  $("#result").append(data.result2);
                });
                return false;
              });
            });
        
        
    });
    </script>

    <body>

       <form>
    
    <div id="Entradas">
        
    </div>
        
        <br>
        
        <a href=# id=process_input><button class='btn btn-default'>Send</button></a>
        
    </form>
                    
    <p>
                <label>
                
                <input type="radio" name="filaint" id="der-iz" value="der-iz" >Right-Left</label>
                
                
                <label>
                    
                <input type="radio" name="filaint" id="ab-ar" value="ab-ar" >Down-Up</label>
    
    </p>
    
    <br>
    
    <div id=result>
    
    </div>

</body>

Balon

@app.route("/")
def index():

    return render_template("InsertarFlask3.html")

@app.route("/background_process")
def background_process():
    

    lang = str(request.args.get('mess1'))
    lang1 = str(request.args.get('mess2'))
    lang2 = str(request.args.get('message2'))
    
    return jsonify({'result':lang, 'result1':lang1, 'result2':lang2})

Textul de intrări generate de butonul radio "der-iz" este tipărită ca Nici unul, și singurul text generat de butonul radio "ab-ar" este imprimat corect.

Apreciez că mă ajute pentru a corecta această punere în aplicare.

flask html javascript jquery
2021-11-24 02:57:35
1

Cel mai bun răspuns

0

Nu am folosit jQuery dar mi-ar rezolva simplu JS în primul rând crearea de element, apoi schimba id-ul generat dinamic, apoi adăugarea-l la mamă, după cum urmează:

$("#der-iz").click(function(){

  let ta = document.createElement("textarea");
  ta.name = "maybesomethingdescriptive"+i.toString();
  //rest of attributes
  ta.classList.add("control-class") // with this you can query later over an indeterminated number of elements
  document.getElementById("Entradas").appendChild(ta);
  i++;
}

Cred că o pot face în direct în JQuery, dar nu pot oferi această soluție

adăugarea de clasă se poate repeta peste toate elementele, fără să știe cât de mulți dintre ei, sau numele lor, cu document.querySelectorAll(".control-class")

2021-11-24 04:21:01

Vă mulțumesc foarte mult!. Acesta funcționează foarte bine.
Christefs

Contribuție foarte bun.
Christefs

@Christefs Mare! ajută-mă accepta raspunsul, eu sunt de rectificat punctul de a comenta
mnzbono

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................