How can I make the input fields in the gift message compulsory/ required on the checkout page?
By Magento's default, you don't have to fill in these fields below, but I need to make it required if the checkbox of id="allow_gift_messages_for_order"
is checked.
To
From
Message
This is the code,
<div class="allow-gift-messages-for-order-container" id="allow-gift-messages-for-order-container" style="display:none">
<p class="micro-text-cart"><?php echo $this->__('You can leave this box blank if you do not wish to add a gift message for whole order.') ?></p>
<input type="hidden" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][type]" value="quote" />
<div class="form-group">
<ul>
<li class="fields">
<div class="form-group col-lg-6 field control-group name-lastname">
<label for="gift-message-whole-from"><?php echo $this->__('From') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][from]" id="gift-message-whole-from" title="<?php echo $this->__('From') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getSender(), $this->getDefaultFrom()) ?>" class="input-text validation-passed form-control" />
</div>
</div>
<div class="form-group col-lg-6 field control-group">
<label for="gift-message-whole-to"><?php echo $this->__('To') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][to]" id="gift-message-whole-to" title="<?php echo $this->__('To') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getRecipient(), $this->getDefaultTo()) ?>" class="input-text validation-passed form-control" />
</div>
</div>
</li>
<li class="wide">
<div class="form-group">
<label for="gift-message-whole-message"><?php echo $this->__('Message') ?></label>
<div class="input-box">
<textarea id="gift-message-whole-message" onchange="toogleRequired('gift-message-whole-message', ['gift-message-whole-from','gift-message-whole-to'])" class="input-text validation-passed giftmessage-area form-control" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][message]" title="<?php echo $this->__('Message') ?>" rows="5" cols="10"><?php echo $this->getEscaped($this->getMessage()->getMessage()) ?></textarea>
</div>
</div>
</li>
</ul>
</div>
<script type="text/javascript">
//<![CDATA[
toogleRequired('gift-message-whole-message', ['gift-message-whole-from','gift-message-whole-to']);
//]]>
</script>
</div>
EDIT:
<form name="my-custom-form" id="my-custom-form" action="" method="post">
<div class="form-group">
<ul>
<li class="fields">
<div class="form-group col-lg-6 field control-group name-lastname">
<label for="gift-message-whole-from" class="required"><em>*</em><?php echo $this->__('From') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][from]" id="gift-message-whole-from" title="<?php echo $this->__('From') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getSender(), $this->getDefaultFrom()) ?>" class="input-text required-entry form-control" />
</div>
</div>
<div class="form-group col-lg-6 field control-group">
<label for="gift-message-whole-to" class="required"><em>*</em><?php echo $this->__('To') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][to]" id="gift-message-whole-to" title="<?php echo $this->__('To') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getRecipient(), $this->getDefaultTo()) ?>" class="input-text required-entry form-control" />
</div>
</div>
</li>
<li class="wide">
<div class="form-group">
<label for="gift-message-whole-message"><em>*</em><?php echo $this->__('Message') ?></label>
<div class="input-box">
<textarea id="gift-message-whole-message" onchange="toogleRequired('gift-message-whole-message', ['gift-message-whole-from','gift-message-whole-to'])" class="input-text required-entry giftmessage-area form-control" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][message]" title="<?php echo $this->__('Message') ?>" rows="5" cols="10"><?php echo $this->getEscaped($this->getMessage()->getMessage()) ?></textarea>
</div>
</div>
</li>
</ul>
</div>
</form>
<script type="text/javascript">
//<![CDATA[
toogleRequired('gift-message-whole-message', ['gift-message-whole-from','gift-message-whole-to']);
//]]>
</script>
<script type="text/javascript">
//< ![CDATA[
var customForm = new VarienForm('my-custom-form');
//]]>
</script>
EDIT:
I got it solved! Need to edit the checkout.js in IWD OPC extension actually,
....
....
initSaveOrder: function(){
$j(document).on('click', '.opc-btn-checkout', function(){
if (IWD.OPC.Checkout.disabledSave==true){
return;
}
var addressForm = new VarienForm('billing-new-address-form');
if (!addressForm.validator.validate()){
return;
}
console.log($j('input[name="allow_gift_messages_for_order"]').prop('checked'));
if ($j('input[name="allow_gift_messages_for_order"]').prop('checked') === true){
var giftForm = new VarienForm('gift-message-form');
if (!giftForm.validator.validate()){
return;
}
}
if (!$j('input[name="billing[use_for_shipping]"]').prop('checked')){
var addressForm = new VarienForm('opc-address-form-shipping');
if (!addressForm.validator.validate()){
return;
}
}
IWD.OPC.saveOrderStatus = true;
IWD.OPC.Plugin.dispatch('saveOrderBefore');
if (IWD.OPC.Checkout.isVirtual===false){
IWD.OPC.Shipping.saveShippingMethod();
}else{
IWD.OPC.validatePayment();
}
});
},
...
...
inline.html,
<div class="form-group" id="gift-message-form">
<ul>
<li class="fields">
<div class="form-group col-lg-6 field control-group name-lastname">
<label for="gift-message-whole-from" class="required"><em>*</em><?php echo $this->__('From') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][from]" id="gift-message-whole-from" title="<?php echo $this->__('From') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getSender(), $this->getDefaultFrom()) ?>" class="input-text required-entry form-control" />
</div>
</div>
<div class="form-group col-lg-6 field control-group">
<label for="gift-message-whole-to" class="required"><em>*</em><?php echo $this->__('To') ?></label>
<div class="input-box">
<input type="text" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][to]" id="gift-message-whole-to" title="<?php echo $this->__('To') ?>" value="<?php echo $this->getEscaped($this->getMessage()->getRecipient(), $this->getDefaultTo()) ?>" class="input-text required-entry form-control" />
</div>
</div>
</li>
<li class="wide">
<div class="form-group">
<label for="gift-message-whole-message" class="required"><em>*</em><?php echo $this->__('Message') ?></label>
<div class="input-box">
<textarea id="gift-message-whole-message" onchange="toogleRequired('gift-message-whole-message', ['gift-message-whole-from','gift-message-whole-to'])" class="input-text required-entry giftmessage-area form-control" name="giftmessage[<?php echo $this->getEntity()->getId() ?>][message]" title="<?php echo $this->__('Message') ?>" rows="5" cols="10"><?php echo $this->getEscaped($this->getMessage()->getMessage()) ?></textarea>
</div>
</div>
</li>
</ul>
</div>