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

CSR Form validation mit Java Script

bewertet von 0 Usern
Beantwortet Dieser Beitrag hat 1 Geprüfte Antwort | 4 Antworten | 2 Followers

Ohne Rang
11 Beiträge
Dam0kles erstellt in 18 Jun 2015 16:26

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.

Beantwortet Geprüfte Antwort

Ohne Rang
11 Beiträge

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! :)

Alle Antworten

Top-10-Beitragsschreiber
18.939 Beiträge

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
Top-500-Beitragsschreiber
46 Beiträge

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

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

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! :)

Seite 1 von 1 (5 Elemente) | RSS