2017-06-06 5 views
0

Ich habe mehrere Schaltflächen mit dem Attribut rel. Ich nannte sie rel1, rel2 usw.JavaScript löscht den Text in meinem Textfeld

Die Rels enthält Daten, die ich mit Javascript abrufen.

Wenn ich auf den Button klicken muss die Schaltfläche senden ein zweites JavaScript ausführen. Das zweite JavaScript sendet die rel an ein Textfeld.

Bis jetzt funktioniert das Skript. Aber wenn ich auf die Schaltfläche für die zweite rel die erste Textbox, die mit den Daten von rel1 gefüllt ist, wird leer.

Weiß jemand, was das Problem ist und wie ich es lösen kann? Hier

ist das Skript für button1:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#grid1').DataTable({ 
     "bprocessing": true, 
     "serverSide": true, 
     "ajax": { 
     "url": "response1.php", 
     "type": "POST", 
     "error": function(){ 
      $("#employee_grid_processing").css("display","none"); 
     } 
     }, 
     "columnDefs": [ { 
     "targets": 6, 
     "render": function (data, type, full, meta) { 
      return '<button type="button" id="product_select1" rel1="'+data+'" onclick="getProduct1()">Button</button>'; 
     } 
     } ]    
    }); 
    }); 
</script> 

Diese Skripte sendet die Daten an das Textfeld:

<script type="text/javascript"> 
    $('body').on('click', '.selectClass', function() { 
    var product_txt1   = $(this).attr('rel1'); 

    $("#product_txt1").val(product_txt1); 
    modal1.style.display = "none"; 

    });  
</script> 

Vielleicht ist es neccesary. Hier ist mein zweites Skript:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#grid2').DataTable({ 
     "bprocessing": true, 
     "serverSide": true, 
     "ajax": { 
     "url": "response2.php", 
     "type": "POST", 
     "error": function(){ 
      $("#employee_grid_processing").css("display","none"); 
     } 
     }, 
     "columnDefs": [ { 
     "targets": 6, 
     "render": function (data, type, full, meta) { 
      return '<button type="button" id="product_select1" rel2="'+data+'" onclick="getProduct2()">Button</button>'; 
     } 
     } ]    
    }); 
    }); 
</script> 

<script type="text/javascript"> 
    $('body').on('click', '.selectClass', function() { 
    var product_txt2   = $(this).attr('rel2'); 

    $("#product_txt2").val(product_txt2); 
    modal2.style.display = "none"; 

    });  
</script> 
+0

„Aber wenn ich für die zweite rel auf die Schaltfläche klicken Sie auf das erste Textfeld, dass mit den Daten von rel1 gefüllt ist leer wird.“ Ich kann es nicht verstehen. Könnten Sie es deutlicher erklären? – Duannx

+0

Ich machte etwas in jfiddle. https://jsfiddle.net/pvf2fws5/. Wenn ich auf "Button 1" in "textfield1" klicke, bekomme ich die Daten (data = 1). Wenn ich auf 'Button 2' klicke, wird' textfield1' leer und 'textfield2' wird mit Daten gefüllt (data = 2). – John

+0

Ihre Click-Event-Handler sind beide basierend auf der gleichen Elementklasse gebunden (und in Ihrer Geige haben keine Elemente diese Klasse), aber dann wird davon ausgegangen, dass das aktuelle Element ('this') ein Attribut mit einem eindeutigen Namen hat, an das sie ausgeben ein Element mit einer spezifischen ID. Das ergibt keinen Sinn. Sie benötigen entweder separate Handler, die an bestimmte Elemente gebunden sind, oder, besser gesagt, einen generischen Handler, der basierend auf der Klasse, die die DOM-Navigation verwendet hat, gebunden wird, um herauszufinden, welche Eingabe der angeklickten Schaltfläche zugeordnet ist. – nnnnnn

Antwort

1

Das Problem ist, wenn Sie auf eine Schaltfläche klicken, löst es alle Klick-Funktion. Weil Sie Klickfunktion nach Klasse behandeln. Sie müssen Ihre Schaltflächen nach eindeutiger ID angeben und die Klickfunktion mit dieser ID behandeln. Entweder können Sie Ihre Klickfunktion wie das fusionieren:

$('body').on('click', '.selectClass', function() { 
    var product_txt1   = $(this).attr('rel1'); 
    var product_txt2   = $(this).attr('rel2'); 
    if(product_txt1 != null && product_txt1 != undefined){ 
     $("#product_txt1").val(product_txt1); 
     modal1.style.display = "none"; 
    } 
    if(product_txt2 != null && product_txt2 != undefined){ 
     $("#product_txt2").val(product_txt2); 
     modal2.style.display = "none"; 
    } 

    }); 
+0

Danke, es hat funktioniert – John

+0

Gern geschehen – Duannx

Verwandte Themen