How to programmatically know a required select list has no value on node add/edit form page?
It will depend on the field type. For a list field with text/numeric values, the output of the field API function field_info_field() contains allowed values within its settings element. This field data can be fed into list_allowed_values() to retrieve either the static or dynamic list of allowed values for the field.
For example:
$field = field_info_field('field_myfield');
$values = list_allowed_values($field);
if (count($values) &gt; 0) {
  // There are allow values
}
else {
  // There are no allowed values
}