diff --git a/misc/machine-name.js b/misc/machine-name.js
index 00a648a1b54f2edd22abc1d0d65c681732fc1108..2691c3b73a2c849ac55d105024102690b3d9df8f 100644
--- a/misc/machine-name.js
+++ b/misc/machine-name.js
@@ -35,6 +35,8 @@ Drupal.behaviors.machineName = {
       if ($target.hasClass('error')) {
         return;
       }
+      // Figure out the maximum length for the machine name.
+      options.maxlength = $target.attr('maxlength');
       // Hide the form item container of the machine name form element.
       $wrapper.hide();
       // Determine the initial machine name value. Unless the machine name form
@@ -103,13 +105,14 @@ Drupal.behaviors.machineName = {
    *     disallowed characters in the machine name; e.g., '[^a-z0-9]+'.
    *   - replace: A character to replace disallowed characters with; e.g., '_'
    *     or '-'.
+   *   - maxlength: The maximum length of the machine name.
    *
    * @return
    *   The transliterated source string.
    */
   transliterate: function (source, settings) {
     var rx = new RegExp(settings.replace_pattern, 'g');
-    return source.toLowerCase().replace(rx, settings.replace);
+    return source.toLowerCase().replace(rx, settings.replace).substr(0, settings.maxlength);
   }
 };