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.




Kalender Anfangszeit/ Endzeit begrenzen

Geprüfte Antwort Dieser Beitrag hat 18 Antworten

Ohne Rang
253 Beiträge
BBB erstellt 13 Mai 2013 09:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

gibt's eine Möglichkeit die Anfangszeit/ Endzeit im Kalender zu begrenzen? Also das die Benutzer nur z.B. zwischen 8:00 und 18:00  auswählen können.

Bin über jede Antwort dankbar.

Viele Grüße

BBB

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 13 Mai 2013 13:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Man könnte die nicht gewünschten Uhrzeiten per JavaScript aus den DropDowns entfernen.

Du kannst auch mal mit der Spaltengültigkeitsprüfung experimentieren, damit sollte es auch gehen. Ich habe aber keine Anleitung dazu parat, nur einen Tip: Datumswerte werden intern als Kommazahl gespeichert. Der ganzzahlige Anteil ist der Tag, die Nachkommastellen die Uhrzeit. o,5 ist also z.B. 12 Uhr mittags.

Und man könnte einen EventReceiver programmieren, der die eingegebenen Werte nach Belieben analysiert und ggf. eine Meldung ausgibt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 13 Mai 2013 14:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die Antwort.

Wie kann ich die Uhrzeiten per JavaScript entfernen? Also wie kann ich das Dropdown-Feld ansprechen?

Viele Grüße

BBB

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 13 Mai 2013 14:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da gibt es viele Möglichkeiten. Die einfachste dürfte document.getElementById(<ID_des_DropDowns>) sein. jQuery kann es evtl. vereinfachen, lohnt sich aber nur, wenn man es ohnehin schon benutzt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 14 Mai 2013 08:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Brauche ich dafür Visuell Studio oder geht das im SPD? Und woher weiß ich die ID der Dropdown-Liste?

Sorry für die Fragen habe noch nie in SharePoint programmiert.

 

Viele Grüße

BBB

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Mai 2013 08:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das könnte dann schwierig werden ;-)

Du kannst SharePoint DEsigner verwenden. Öffne einfach die NewForm bzw. EditForm des Kalenders und füge Dein JavaScript in der Codeansicht ein. Die ID bekommst Du, wenn Du Dir den HTML-Code einfach im Browser anschaust. Im IE gibt es die Entwicklertools (F12), mit denen Du sowohl das HTML analysieren als auch JavaScript debuggen kannst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 14 Mai 2013 08:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die schnelle Antwort ich werde das mal probieren!

Learning by doing ;-)

Ohne Rang
253 Beiträge
BBB Als Antwort am 14 Mai 2013 09:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie lösche ich jetzt die Werte?

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Mai 2013 09:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Öffne das Formular (NewForm oder EditForm) in SharePoint Designer, schalte in die Codeansicht um und suche nach PlaceHolderAdditionalPageHead. Dort fügst Du zum evtl. schon vorhandenen Inhalt noch folgendes ein:

<script type="text/javascript">
_spBodyOnLoadFunctionNames.push("removeUnwantedTimes");
function removeUnwantedTimes() {
 var select = document.getElementById("Hier Deine ID");
 var i, option, time;
 for (i = select.options.length - 1; i >= 0; i--) {
  option = select.options[i];
  time = parseInt(option.value, 10);
  if (time < 10 || time > 18) {
   select.remove(i);
  }
 }
}
</script>

Anstelle von "Hier Deine ID" setzt Du die ID des DropDowns. Wie Du sie findest, habe ich ja oben geschrieben. Das Script entfernt alle Zeiten kleiner 10 und größer 18 Uhr. Du kannst das in der Zeile "if (time < 10 || time > 18)" ändern. Und Du solltest das Script natürlich auf beide DropDowns (Anfangs- und Endezeit) anwenden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 14 Mai 2013 10:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

besten dank für deine Antwort funktioniert super. Aber sobald ich die ID der Endzeit angebe verschwindet es bei der Anfangszeit, ich habe den Code für die Endzeit direkt darunter eingefügt.

Wo liegt mein Fehler?

Viele Grüße

BBB

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Mai 2013 10:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Kann ich Dir nicht sagen. Ich kenne Deinen Code nicht. Kopiere entweder die gesamte Funktion und rufe dann beide über _spBodyOnLoadFunctionnames auf oder kopiere nur den Inhalt der Funktion.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 14 Mai 2013 10:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hab's hinbekommen.

Hatte bei beiden (Anfangszeit & Endzeit) die gleiche Funktion genommen.

Nochmals vielen Dank für deine Hilfe!!!

Ohne Rang
253 Beiträge
BBB Als Antwort am 7 Juni 2017 14:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was muss beachtet werden, damit dies auch bei Office 365 funktioniert? Denn einfach übernehmen klappt nicht.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Juni 2017 14:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Keine Ahnung, das solltest Du per Debugger aber herausfinden können. Im Grunde sollte es genauso funktionieren.

Ich würde es allerdings heute anders lösen, nämlich per CSR/JSLink.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 8 Juni 2017 10:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Andi Fandrich"]

Ich würde es allerdings heute anders lösen, nämlich per CSR/JSLink.

[/quote]

Wie könnte das aussehen?

[quote user="Andi Fandrich"]

Keine Ahnung, das solltest Du per Debugger aber herausfinden können. Im Grunde sollte es genauso funktionieren.

[/quote]

Mit welchem Debugger?

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Juni 2017 10:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

CSR/JSLink: seit 2013 werden Listenansichten und -formulare per javaScript gerendert und in diesen Prozeß kann man mit eigenem Script eingreifen. D.h. an der Stelle, an der das DropDown erzeugt wird, kannst Du direkt eingreifen. Eine konkrete Anleitung für Dein Problem habe ich nicht, aber im Web findet man jede Menge grundsätzliche Anleitungen zur Technik.

JavaScript-Debugger: nimm den, der Dir am meisten liegt. Die einen schwören auf den und andere auf einen anderen. In den meisten Browsern funktioniert F12...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 8 Juni 2017 12:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Andi Fandrich"]

JavaScript-Debugger: nimm den, der Dir am meisten liegt. Die einen schwören auf den und andere auf einen anderen. In den meisten Browsern funktioniert F12...

[/quote]

Firebug zeigt an und auch Chrome: Konsolenfehler TypeError: document.getElementById is not a function.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Juni 2017 12:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

document.getElementById funktioniert auch noch in den allerneuesten Browsern. Da muß also etwas anderes faul sein bzw. die Funktion wurde irgendwo überschrieben nach dem Motto
document.getElementById = "ätsch";

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
253 Beiträge
BBB Als Antwort am 8 Juni 2017 14:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe die Zeile noch mal per Hand abgeschrieben und siehe da ... es funktioniert.