Kategorien
IT SharePoint

SharePoint: Formularfeld mittels JavaScript ermitteln

In SharePoint möchte man manchmal mittels eigenem JavaScript-Code ein Formularfeld (NewForm und EditForm) holen, zum Beispiel um dessen Wert auszulesen, um damit etwas zu machen oder man möchte via JavaScript einen solchen Feldwert auf einem Formular dynamisch setzen.

Es gibt leider kein schönes Bordmittel um den aktuellen Wert direkt aus dem Formular auszulesen (für den Wert aus einem Listitem natürlich schon), aber mit der folgenden Funktion erhaltet ihr mit der Eingabe des „internalFieldName“ (interner Feldname) die Tablerow (TR-Tag) des Feldes aus der Formular-Tabelle:

function getFieldTableRow(internalFieldName) {
	var row = null;
	jQuery("td.ms-formbody").each(function () {
		if (jQuery(this).html().indexOf("FieldInternalName=\"" + internalFieldName + "\"") != -1) {
			row = jQuery(this).closest("tr");
			/* break each loop */
			return false;
		}
	});
	return row;
}

Das schöne dabei ist, dass die Funktion auf den internen Feldnamen zurückgreift. Das heisst, das der Code auch bei Mehrsprachigkeit funktioniert oder falls einmal der Anzeigename eines Feldes geändert wird.

Möchte man nun z.B. die Zeile auf dem Formular ausblenden könnte man mittels jQuery folgendes tun:

var titleRow = getFieldTableRow("Title");
titleRow.hide();

Möchte man den Wert eines Feldes erhalten, könnte man folgendes tun:

var titleRow = getFieldTableRow("Title");
var titleValue = titleRow.find("input").val();