Ok so with radio buttons (as you have with 1. on your first example page) I'd make one selected by default ... it's not really a good idea to use radio buttons and have none selected. The Lango is quite right - Cre doesn't have this coded in with radio buttons, and it's a mistake.
So here's some basic code that you can copy into /includes/classes/creAttributes.php that will make the first radio button selected by default. Remeber you can use attribute sort order to change which is the first option.
Code:
case 2:
$tmp_html = '';
$i = 0;
foreach ( $this->values[$oID] as $vID => $ov_data ) {
$i++;
if ( (float)$ov_data['price'] == 0 ) {
$price = ' ';
} else {
$price = '( ' . $ov_data['prefix'] . ' ' . $currencies->display_price($ov_data['price'], $tax_rate) . ' )';
}
if (defined('PRODUCT_INFO_SUB_PRODUCT_ATTRIBUTES') && PRODUCT_INFO_SUB_PRODUCT_ATTRIBUTES == 'True' ) {
$name = 'id[' . $this->products_id . '][' . $oID . '][r]';
} else {
$name = 'id[' . $oID . ']';
}
if ($i === 1) {
$tmp_html .= '<input type="radio" name="' . $name . '" value="' . $vID . '" checked="checked">' . $ov_data['name'] . ' ' . $price . '<br>';
} else {
$tmp_html .= '<input type="radio" name="' . $name . '" value="' . $vID . '">' . $ov_data['name'] . ' ' . $price . '<br>';
}
} // End of foreach option value
$label = $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br><span class="smallText">' . $op_data['instructions'] . '</span>' : '' );
$this->HTML_tags[] = array('label' => $label, 'HTML' => $tmp_html);
break;
As for all the dropdowns where you have blanks - why? You'd either use 'Please select' in there OR remove the blank / please select altogether and go in with the first option. If the customer doesn't change this then that's what'll end up in the cart selected - that's how dropdown menus work.
The checkboxes could be handled the same way as the radio buttons.
My theory on customer selections VS popup warnings is that'd be better to get the customer to decide by changing a preselected choice than blasting them with a warning about not selecting anything at all. After all, it's their decision right?
The attribute in there that would need a 'required' check would be the 7. provide initials / numbers ... which could be solved by my original post (ie checking how this is done in eg create account)
Simon