The module is working fine for text fields but not number fields.
I finally found the source of that erroneous behaviour in function no_table_drag_field_widget_form_alter(). This function only adds the #nodrag parameter if $element['#field_name'] is set. This works for text fields, but for number fields there is an additional level in the $element array and the field name is located in $element['value']['#field_name'] instead. If changed the function as follows:

/**
 * Implements hook_field_widget_form_alter().
 */
function no_table_drag_field_widget_form_alter(&$element, &$form_state, $context) {
  if ((isset($element['#field_name']) || isset($element['value']['#field_name'])) && isset($context['instance']['settings']['no_table_drag'])) {
    if (TRUE == $context['instance']['settings']['no_table_drag']) {
      $element['#nodrag'] = TRUE;
    }
  }
}

but maybe the check for field name could be dropped altogether? Shouldn't the check for the "no_table_drag" option be enough since it only can be assigned to fields?

Note: I added the phone module issue as related. I haven't work with that module myself but I can imagine it might be a derivative of the number field and thus has the same difference in field name behaviour.

Comments

Paul Broon created an issue.