diff --git a/ui/scripts/system.js b/ui/scripts/system.js index f355059daa4..7f638d880da 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -1257,9 +1257,8 @@ var $form = $(this).closest("form"); var selectedNetworkOfferingId = $(this).val(); $(networkOfferingObjs).each(function(){ - if(this.id == selectedNetworkOfferingId) { - //networkoffering.specifyipranges - if(this.guestiptype == "Isolated") { + if(this.id == selectedNetworkOfferingId) { + if(this.guestiptype == "Isolated") { if(this.specifyipranges == false) { $form.find('.form-item[rel=guestStartIp]').hide(); $form.find('.form-item[rel=guestEndIp]').hide(); @@ -1268,18 +1267,25 @@ $form.find('.form-item[rel=guestStartIp]').css('display', 'inline-block'); $form.find('.form-item[rel=guestEndIp]').css('display', 'inline-block'); } + + //cloudStack.dialog.createFormField.validation.required.remove($form.find('.form-item[rel=guestGateway]')); //make guestGateway optional + //cloudStack.dialog.createFormField.validation.required.remove($form.find('.form-item[rel=guestNetmask]')); //make guestNetmask optional } else { //this.guestiptype == "Shared" $form.find('.form-item[rel=guestStartIp]').css('display', 'inline-block'); - $form.find('.form-item[rel=guestEndIp]').css('display', 'inline-block'); + $form.find('.form-item[rel=guestEndIp]').css('display', 'inline-block'); + + //cloudStack.dialog.createFormField.validation.required.add($form.find('.form-item[rel=guestGateway]')); //make guestGateway required + //cloudStack.dialog.createFormField.validation.required.add($form.find('.form-item[rel=guestNetmask]')); //make guestNetmask required } - - //networkoffering.specifyvlan + if(this.specifyvlan == false) { $form.find('.form-item[rel=vlanId]').hide(); + //cloudStack.dialog.createFormField.validation.required.remove($form.find('.form-item[rel=vlanId]')); //make vlanId optional } else { - $form.find('.form-item[rel=vlanId]').css('display', 'inline-block'); + $form.find('.form-item[rel=vlanId]').css('display', 'inline-block'); + //cloudStack.dialog.createFormField.validation.required.add($form.find('.form-item[rel=vlanId]')); //make vlanId required } return false; //break each loop } diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js index 3e2f0b27784..709fabfefc7 100644 --- a/ui/scripts/ui/dialog.js +++ b/ui/scripts/ui/dialog.js @@ -398,6 +398,42 @@ }).closest('.ui-dialog').overlay(); }, + /** + * to change a property(e.g. validation) of a createForm field after a createForm is rendered + */ + createFormField: { + validation: { + required: { + add: function($formField) { + if($formField.find('.name').find('label').find('span.field-required').length == 0) { + $formField.find('.name').find('label').prepend($('').addClass('field-required').html('*')); + + var $input = $formField.find('input'); + var validationRules = $input.data('validation-rules'); + if(validationRules == null) + validationRules = {}; + validationRules.required = true; + $input.data('validation-rules', validationRules); + } + }, + remove: function($formField) { + if($formField.find('.name').find('label').find('span.field-required').length > 0) { + $formField.find('.name').find('label').find('span.field-required').remove(); + + var $input = $formField.find('input'); + var validationRules = $input.data('validation-rules'); + if(validationRules != null && validationRules.required != null) + delete validationRules.required; + $input.data('validation-rules', validationRules); + + //$formField.find('.value').find('label.error[generated=true]').remove(); + $formField.find('.value').find('label.error').hide(); + } + } + } + } + }, + /** * Confirmation dialog */