• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

search strings mit jquery

musclebreast

Mitglied
Hallo,

ich versuche den Feldnamen eines Input Feldes zu ändern:

Code:
<input type="HIDDEN" value="1702404" name="Browse_value1_ID">)

$('input[name^="Browse_value"]').eq(i-1).attr('name','Browse_value'+i+'_ID');


Das funktiniert. Allerdings bin ich mit dem finden des Feldes nicht ganz glücklich.


$('input[name^="Browse_value"]')


weil es gibt auch Felder die so heissen:

Browse_value1_name


kann ich bei der Suche auch mit Wildcards arbeiten? Ich war uf der jquery Seite und dort kann man entweder am Anfang eines Names suchen oder am Ende? Aber kann ich auch sowas verwenden:

Browse_value*_name

Damit ich praktisch nach dem Anfang und ende suche.

Das Naming der Felder ist einfach doof, weil die Zahl in der Mitte des Namens ist und nicht am Ende. Aber ich habe keinen Einfluss auf das Naming..

LG,

LAra
 
Du kannst die Selektoren von jQuery erweitern, z.B. so (musst du noch an deine Bedürfnisse anpassen und noch nicht getestet):

$.expr[":"].regex = function(el, attr) {
return el.attr("name").match(attr[3]); //wird true zurückgegeben, wird das Element aufgenommen, bei false nicht / attr entält ein Array..., attr[3] enthält dabei das, was später in Klammern steht)
}
$("input:regex(browse_value(1_name)?)");


Aber eigentlich sollte es schon so gehen, wie du es bereits machst (mit dem "^="-Selektor). Es gibt auch noch andere Selektoren: CSS-Selektoren :: Attribut-Selektoren
 
Geht eigentlich noch einfacher.

Angenommen ich habe 4 Input-Elemente:

Code:
[COLOR=#3933FF][FONT=Monaco][COLOR=#009193]<[/COLOR][COLOR=#4e9192]input [/COLOR][COLOR=#932192]type[/COLOR][COLOR=#000000]=[/COLOR]"text"[COLOR=#932192]name[/COLOR][COLOR=#000000]=[/COLOR]"Browse_value1_ID"[COLOR=#009193]>[/COLOR][/FONT][/COLOR]
[COLOR=#3933FF][FONT=Monaco][COLOR=#009193]<[/COLOR][COLOR=#4e9192]input [/COLOR][COLOR=#932192]type[/COLOR][COLOR=#000000]=[/COLOR]"text"[COLOR=#932192]name[/COLOR][COLOR=#000000]=[/COLOR]"Browse_value99_ID"[COLOR=#009193]>[/COLOR][/FONT][/COLOR]
[COLOR=#3933FF][FONT=Monaco][COLOR=#009193]<[/COLOR][COLOR=#4e9192]input [/COLOR][COLOR=#932192]type[/COLOR][COLOR=#000000]=[/COLOR]"text"[COLOR=#932192]name[/COLOR][COLOR=#000000]=[/COLOR]"foobar_irgendwas_ID"[COLOR=#009193]>[/COLOR][/FONT][/COLOR]
[COLOR=#3933FF][FONT=Monaco][COLOR=#009193]<[/COLOR][COLOR=#4e9192]input [/COLOR][COLOR=#932192]type[/COLOR][COLOR=#000000]=[/COLOR]"text"[COLOR=#932192]name[/COLOR][COLOR=#000000]=[/COLOR]"Browse_value_Id"[COLOR=#009193]>[/COLOR][/FONT][/COLOR]

und will davon diejenigen targeten, deren name-Attribut mit "Browse_value" beginnt, worauf eine ein- oder mehrstellige Zahl folgt, und die mit "_ID" endet, dann kann ich so etwas schreiben:

Code:
[FONT=Monaco]$.expr[[COLOR=#3933ff]':'[/COLOR]].searchExpression = [COLOR=#931a68]function[/COLOR](elem) {[/FONT]
[COLOR=#3933FF][FONT=Monaco][COLOR=#931a68]  return[/COLOR][COLOR=#000000] $(elem).attr([/COLOR]'name'[COLOR=#000000]).match([/COLOR]'^Browse_value[0-9]+_ID$'[COLOR=#000000]);[/COLOR][/FONT][/COLOR]
[FONT=Monaco]};[/FONT][FONT=Monaco]
[/FONT]
[COLOR=#3933FF][FONT=Monaco][COLOR=#000000]$([/COLOR]'input:searchExpression'[COLOR=#000000]).css([/COLOR]'border'[COLOR=#000000], [/COLOR]'1px red solid'[COLOR=#000000]);[/COLOR][/FONT][/COLOR]
 
Zurück
Oben