2016-07-05 11 views
0

In dieser Webseite erzeuge ich mehrere Textboxen dynamisch und jedes Textfeld soll einen eindeutigen Wert enthalten und ich möchte diesen Wert dynamisch erhalten. Aber ich bin nicht in der Lage, den Wert des Textfelds entsprechend seiner Position abzufangen. Dieser Code funktioniert nur für die zuerst generierte Textbox. Ich habe Code wie diesesWie man Wert von dynamisch erzeugten Textbox mit derselben Identifikation unter Verwendung AJAX/PHP erhält?

<tr> 
<td align="center"><input type="text" name="serialNoArray[]" id="serialArray" onChange="checkusername()" ><span id="std_id_status"></span></td> 
</tr> 

<script> 
function checkusername() { 
    var s = _("serialArray").value; 
    if(s != "") { 
     _("std_id_status").innerHTML = 'checking ...'; 
     var ajax = ajaxObj("POST", "sellingDetails.php"); 
     ajax.onreadystatechange = function() { 
      if(ajaxReturn(ajax) == true){ 
       _("std_id_status").innerHTML = ajax.responseText; 
      } 
     } 
     ajax.send("std_id_check="+s); 
     }    
}  
</script> 
+0

Fügen Sie sie dynamisch über JS oder PHP hinzu? Wenn JS das vorhandene JavaScript erkennt, werden neu hinzugefügte DOM-Elemente nicht erkannt. Sie müssen die Ereignisdelegierung verwenden, um Ereignisse bis zu einem Punkt im DOM zu blasen, der vorhanden war, als JS beim Laden der Seite ausgeführt wurde. –

+1

duplizieren 'id' s ist illegal html, und es gibt nichts, was Sie tun können, um diese Arbeit zu machen. getElementById wird immer nur ein Element zurückgeben. Sie müssen die IDs so ändern, dass sie für jede einzelne ID eindeutig sind. –

+0

wie soll ich dann den Wert der mit einer dynamischen ID an 'checkusername()' Funktion senden, damit es in dieser Variable 's' gespeichert werden kann? – Assasin

Antwort

0

habe ich nicht getestet, aber dies sollte es

Alle dynamisch generierten Textfelder tun, geben ihnen eine Klasse

<input type="text" class="tagMe" placeholder="Enter Serial No." onkeypress="return isNumberKey2(event)" onkeyup="restrict('serialArray')" onChange="checkusername()" required autofocus > 

Sammeln der Daten

var info= ""; 
$('.tagMe').each(obj, function(key, value) { 
if(info != "") 
     info += "^"; //^is a delimiter 
info += value; 
}); 

Senden Sie Informationen an Ihren Server, teilen Sie sie auf^und parsen Sie Daten (Vorsicht bei leeren Elementen)

+0

Ihr Code funktioniert nicht. Ich möchte den Wert des Textfelds entsprechend seiner Position und möchte, dass es in dieser Variable gespeichert wird. Ein Textbox-Wert zu einem Zeitpunkt. – Assasin

1

Zuerst sollten Sie Klassen nicht ID verwenden, da ein Element mit ID für das gesamte Dokument eindeutig sein muss. Und da Sie onChange verwenden, können Sie das Element mit this wie das onChange="checkusername(this)" übergeben. Ich denke, man sollte auch den Code der onkeyup="restrict('serialArray')"restrict Funktion auch ändern, aber ich sehe nicht, dass Code, so kann ich Ihnen nicht mehr helfen, wenn Sie zu diesem Code nicht bieten ...

<tr> 
    <td align="center"><input type="text" name="serialNoArray[]" class="serialArray" onkeyup="restrict('serialArray')" onChange="checkusername(this)" ><span class="std_id_status"></span></td> 
    </tr> 

Dann können Sie nur der Wert des Elements wird nur die hTML der Anpassungsspanne geändert und geändert werden. (I jQuery im Beispiel verwenden, so dass Sie es in Ihrem Dokument enthalten sollten.)

<script> 
    function checkusername(s) { 

     if (s.value != "") { 
      $(s).nextAll('.std_id_status').first().html('checking ...'); 
      var ajax = ajaxObj("POST", "sellingDetails.php"); 
      ajax.onreadystatechange = function() { 
       if (ajaxReturn(ajax) == true) { 
        $(s).nextAll('.std_id_status').first().html(ajax.responseText); 
       } 
      } 
      ajax.send("std_id_check=" + s.value); 
     } 
    } 
</script> 

Da ich nicht alle javascript habe Code konnte ich nicht testen, aber so etwas sollte funktionieren.

+0

Dies funktioniert nicht. – Assasin

+0

Wie ich schon sagte ... "Da ich nicht all Ihren Javascript Code habe, konnte ich ihn nicht testen, aber so etwas sollte funktionieren.". Vielleicht möchten Sie genauer sein und definieren, was nicht funktioniert ... tun Sie haben einen Fehler in der Konsole? –

+0

Danke für die Hilfe. Das Problem wurde behoben :) – Assasin

Verwandte Themen