The two functions below have been extended by MW to handle the single radio button, in addition to the radio button group (more than one radio button from which to select). The top function can check for a value or just check that one has been selected by passing an '' empty quote as the third variable. The lower function checks only for a specific value/button selected. Call these functions like: var f; var hasErrors; var errorMsgs; . . . f = document._FormAbbrev; . . . ClearFldStyle (f.FldNmSub); if(!CheckButton(f.FldNm,'Failure message for main field', '')) hasErrors = true; if(CheckButton(f.FldNm,'', 'SpecificValueToCheckHere')) { if(!IsCBFldChecked(f.FldNmSub,'Failure message for sub field')) hasErrors = true; } _____ function CheckButton(fieldobj, msg, chkvalue) { // validate button - field var field = (fieldobj.length >0 ) ? fieldobj : [fieldobj]; var selBtn = -1; for (i=field.length-1; i > -1; i--) { if (field[i].checked) { selBtn = i; } } if (selBtn == -1) { // no button selected errorMsgs += msg + "\n\r"; return false; } else { // a button was selected, check the value if (chkvalue=='') { return true; } if (field[selBtn].value == chkvalue) { // match, return true return true; } else { // no match, return false if (msg != '') { errorMsgs += msg + "\n\r"; return false; } } } } function ChkButtonVal(fieldobj, chkvalue) { // validate button - field var field = (fieldobj.length >0 ) ? fieldobj : [fieldobj]; var selBtn = -1; for (i=field.length-1; i > -1; i--) { if (field[i].checked) { selBtn = i; } } if (selBtn == -1) { // no button selected return false; } else { // a button was selected, check the value if (chkvalue=='') { return true; } if (field[selBtn].value == chkvalue) { // match, return true return true; } else { // no match, return false return false; } } } ____________ Function below is the original RCS function. It cannot handle a single radio button. function CheckButton(field, msg, chkvalue) { // validate button - field var selBtn = -1; for (i=field.length-1; i > -1; i--) { if (field[i].checked) { selBtn = i; } } if (selBtn == -1) { // no button selected errorMsgs += msg + "\n\r"; return false; } else { // a button was selected, check the value if (field[selBtn].value == chkvalue) { // match, return true return true; } else { // no match, return false if (msg != "") { errorMsgs += msg + "\n\r"; return false; } } } } _______________________________________________ call validation with: if(CheckButton(f.BtnFld, '', 'Yes') ) { if(!CheckField(f.TxtFld, "When the butten is yes, the text field must not be empty.", 1)) hasErrors = true; } _______________________________________________ Version of CheckButton which allows ANY match for chkvalue (New logica allows for any value for CheckButton selection is okay, not just testing for certain value) function CheckButton(field, msg, chkvalue) { // validate button - field var selBtn = -1; for (i=field.length-1; i > -1; i--) { if (field[i].checked) { selBtn = i; } } if (selBtn == -1) { // no button selected errorMsgs += msg + "\n\r"; return false; } else { // a button was selected, check the value if (field[selBtn].value == chkvalue) { // match, return true return true; } else { if (chkvalue=='') { // ok, no value to check, pass return true; } else { // no match, return false if (msg != "") { errorMsgs += msg + "\n\r"; return false; } } } } }