confirm box not working as expected

Wayne Richmond
Tera Guru

Hi there. I've created a simple confirm message via an onChange client script:

Type: onChange

Field name: Business Area

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

    if (isLoading || newValue === '') {

          return;

    }

if(!g_form.isNewRecord()){

    confirm("Changing the Business Area and Assignment group may mean you can no longer access this record due to security rules");

    g_form.setValue('assignment_group','');

}

}

However, when the user clicks Cancel, the actions continue, namely, the field changes to the new value they've selected and the assignment_group field clears (as per the line in the script). This is not what I'd expect. I would expect the field to return to its original value and for the script to stop and not clear assignment_group. Can any help me achieve the desired result?

Thanks

1 ACCEPTED SOLUTION

Please modify the signature i.e. add one more condition oldValue == newValue



as shown below.....



function onChange(control, oldValue, newValue, isLoading, isTemplate) {


  if (isLoading || newValue === '' || (oldValue === newValue)) {


          return;


}


View solution in original post

12 REPLIES 12

1st do an alert(oldValue); may be the oldvalue is empty, if alert is showing some valid data, then try this.........




var ans = confirm("Changing the Business Area and Assignment group may mean you can no longer access this record due to security rules");




if (ans == true)


    g_form.setValue('assignment_group','');


if (ans == false)


  g_form.setValue('category',oldValue);




if (ans == true)


    return true;


if (ans == false)


    return false;


Hey, thanks for this. It does appear to work, however, if you press 'Cancel' on the confirmation prompt, you enter a loop that can only be broken if you press OK. This appears to be because the CS changes the field back to the old value, prompting the confirmation box again, and so on.


Please modify the signature i.e. add one more condition oldValue == newValue



as shown below.....



function onChange(control, oldValue, newValue, isLoading, isTemplate) {


  if (isLoading || newValue === '' || (oldValue === newValue)) {


          return;


}


Thanks buddy, that's now working perfectly. I appreciate your time on this, really.


if(!g_form.isNewRecord()){  


  if( confirm("Changing the Business Area and Assignment group may mean you can no longer access this record due to security rules")==true)  


    g_form.setValue('assignment_group','');  


    return true;


}  


else


{


return false;


}


}  


Regards
Harish