Hallo,
Nachdem es mir gelungen ist, die Jquery UI Autocomplete Funktion isoliert zum arbeiten zu bringen, möchte ich sie gerne in ein laufendes Formular integrieren.
Mein JS-Code (der isoliert gut arbeitet):
$(function() {
// $('#abbrev').val(\"\");
$(\"#state\").autocomplete({
source: \"./_new/auto.php\",
focus: function( event, ui ) {
$( \"#state\" ).val( ui.item.label_unformatiert );
$( \"li\" ).css( 'cursor', 'pointer' );
return false;
},
minLength: 4,
select: function(event, ui) {
$('#hidden_id').val(ui.item.id);
$('#abbrev').val(ui.item.abbrev);
$('#nik1').val(ui.item.nik1);
}
})
.data(\"autocomplete\")._renderItem = function( ul, item ) {
item.label_unformatiert = item.label;
item.label = item.label.replace(new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" + $.ui.autocomplete.escapeRegex(this.term) + \")(?![^<>]*>)(?![^&;]+;)\", \"gi\"), \"<span class='blaub'>$1</span>\");
return $( \"<li></li>\" )
.append( \"<a><b>\" + item.label + \"</b><br>\" + item.bemerkung + item.taferint + \"</a><hr size=1>\" )
.appendTo( ul );
};
});
Und das Formular:
<input type="text" id="state" name="nummer" size='50' /><br>
<input type="text" id="abbrev" name="bezeichnung" size="80"/><br>
<input type="text" id="nik1" name="einheit" size="80"/><br>
<input type="hidden" id="hidden_id" name="ID" />
Mein Json codiertes return array besteht aus Datensätzen mit je:
$row_array['id'], $row_array['label'], $row_array['bemerkung'], $row_array['value'], $row_array['abbrev'] , $row_array['nik1'], $row_array['taferint']
Hierzu gleich eine Frage:
Warum wird die Nummer (die steht in $row_array['value']) aus dem JSON Array tatsächlich in das #state Element eingetragen, obwohl ich doch gar nicht $('#state').val(ui.item.value); notiert habe??
Nun zu meinem eigentlichen Problem:
In meinem laufenden Script, in das ich Jquery UI autocomplete integrieren möchte, generiere ich mehrere "Eingabezeilen" per php nach folgendem Muster:
...
<TD>
<input type='text' class='f_tab' name=\"nummer[$i]\" id=\"nummer[$i]\" \>
</TD>
<TD>
<input type='text' class='f_tab' name=\"bezeichnung[$i]\" id=\"bezeichnung[$i]\" />
</TD>
...
(Die Tabelle ist eine echte Tabelle, sie dient nicht der Formatierung, sondern ist eine echte Aufzählung)
Meine Fragen:
1. Ist es sinnvoll, den JS-Code für jede Zeile zu wiederholen? Falls ja, wo kommt er hin? In Zelle 1 jeder Zeile?
2. Kann man das über ein Konstrukt ala jQuery(’input[id^="..."]’) einfangen?
3. Kann mir einer das ".data("autocomplete")._renderItem =" erklären? Also nicht den Inhalt der nachfolgenden Funktion, die ist mir durchaus klar.
-- Warum der Punkt vor dem "data"?
-- Warum data?
-- Warum "autocomplete"
Gruß, Klaus