SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




CSR Form validation mit Java Script

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
11 Beiträge
Dam0kles erstellt 18 Juni 2015 16:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich bin auf der Suche nach einer einfachen Möglichkeit ein Eingabefeld mit Hilfe von JavaScript auf der Client Seite zu überprüfen ob diverse Zeichen verwendet werden, die nicht zugelassen sind. Bei meiner Suche fand ich bisher nur diverse Beispiele, die E-Mail Validation durchführen oder die Felder serverseitig überprüfen. Diese Lösungen sind mir zu aufgeblasen und teilweise sehr umständlich.

Hat jemand hier vielleicht schon einmal so ein Script geschrieben/implementiert und kann mir kurz erklären, wie ich dabei vorgehen muss?

Im aktuellen Beispiel versuche ich zu vermeiden, dass jemand diverse Sonderzeichen im "Namen"-Feld  verwendet, wenn eine Dokumentenmappe angelegt wird.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Juni 2015 16:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

CSR wird Dir in diesem Fall nicht helfen. Letztlich mußt Du nach dem Rendern die Textbox ausfindig machen und einen onchange-Handler anhängen. Dabei kann jQuery helfen (und evtl. auch ein jQuery Validierungs Plugin).

Ich habe keine fertige Lösung parat, versuche aber bei Detailfragen gerne zu helfen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
46 Beiträge
Martin089 Als Antwort am 19 Juni 2015 15:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich stimme Andi zu. Mit JavaScript (JQuery ist hier dein bester Freund) kannst du das Problem leicht lösen. Dies unterstützt auch RegEx-Ausdrücke und du kannst zum Beispiel wie oben genannt ein Event von der TextBox nutzen oder gegebenenfalls die PreSaveAction() dafür nehmen, um vor dem speichern eine Überprüfung stattfinden zu lassen.

z.B.:

var thisRegex = new RegExp('yourExpression');

thisRegex.test($("input[title='yourTextBoxTitle]").val());

dies gibt dir ein true/false zurück, was du für weitere Zwecke nutzen kannst.

 

VG,
Martin089

 

Ohne Rang
11 Beiträge
Dam0kles Als Antwort am 22 Juni 2015 11:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für eurer Feedback. Entschuldigt, wenn ich trotz eurer Mühen immer noch keinen Durchblick habe. Ich fürchte ich habe schon ein Problem bei der Auswahl meiner Integration. Ich denke ich muss das kurz erklären.

Ich habe eine Dokumentenmappe, die der Nutzer anlegen darf. Die Mappe darf der Nutzer selbst benennen. Mit Hilfe des Namensfeldes generiere ich später einen Pfad, der auch auf vordefinierte Unterordner referenziert. Das funktioniert ganz gut, bis zu dem Moment, in dem der Nutzer Punkte verwendet um seinen Namen zu gestalten, dieser Fall ist von der bereits integrierten Validation ausgeschlossen. Die Punkte brechen aber später den generierten Pfad und machen den unbrauchbar.
Das möchte ich unterbinden, in dem ich via JavaScript (es soll ganz einfach realisiert werden) das Feld NAME verifiziere und das Absenden der Seite (eine neue Version von NewDocSet.aspx) unterbinde, sobald irgend ein Punkt in der Zeichenkette in betreffendem Feld auftaucht.

Beim absenden der Seite bekomm ich nun den Fehler, dass nur ContentControls die Berechtigung haben, in einer Seite platziert zu werden, die Content Control beinhaltet... Ich fürchte also, dass es auf der Seite gar nicht möglich ist, mit einem Script zu arbeiten. So langsam verliere ich den Überblick, weil die Lösung ja so einfach sein soll :)

Zur Verdeutlichung, die Zeichenkette Test.Test.wausauchimmer? wird von einem Nutzer gewählt, SharePoint lässt nicht zu, dass dieser Name verwendet wird, logisch, wegen dem Fragezeichen... 

Name *

Test.Test.wasauchimmer?


Der Datei- oder Ordnername "Test.Test.wasauchimmer?" enthält ungültige Zeichen. Verwenden Sie einen anderen Namen. Gültige Datei- bzw. Ordnernamen dürfen nicht mit einem Punkt beginnen oder enden, sie dürfen keine aufeinander folgenden Punkte und keines der folgenden Zeichen enthalten: ~ " # % & * : < > ? / \ { | }.

Lass ich das Fragezeichen weg, wird die Mappe angelegt. Die Bedingung dass Punkte innerhalb des Strings auftauchen muss also gesondert überprüft werden. Oder ist mein Ansatz hier schon falsch?

Ohne Rang
11 Beiträge
Dam0kles Als Antwort am 23 Sept. 2015 14:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ahoi!

um das hier abzuschließen, ich habe, um das Problem zu lösen, einen Event Receiver gebastelt, der nach der Eingabe den String ändert.

        public override void ItemAdded(SPItemEventProperties properties)

        {

            base.ItemAdded(properties);

            {

                string contentTypeName = properties.ListItem.ContentType.Name;

                if (contentTypeName == "Dokumentenmappe")

                {

                    SPListItem listItem = properties.ListItem;

                    var listItemNameString = Convert.ToString(listItem["Name"]);

                    listItemNameString = listItemNameString.Replace(".", "_");

                    listItemNameString = listItemNameString.Replace(",", "_");

                    listItem["Name"] = listItemNameString;

                    listItem.Update();

                }

Vielen Dank für all die Denkanstöße! :)