Checkout Shipping Step page, You can display the input field between shipping address and shipping methods.
Magento 2, To display the Input field before shipping methods, you need to create a checkout_index_index.xml file to set the content of the file.
1) Use the “before-form” section of the shippingAddress children in the shipping step hierarchies. We want to display the shipping text area to add specific comments on the shipping step.
Path:
app/code/Jesadiya/ShippingComment/view/frontend/layout/checkout_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="checkout" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shipping-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAddress" xsi:type="array">
<item name="children" xsi:type="array">
<item name="before-form" xsi:type="array">
<item name="children" xsi:type="array">
<item name="comments" xsi:type="array">
<item name="component" xsi:type="string">Jesadiya_ShippingComment/js/view/shipping/shipping-comment</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
We have declared component as Jesadiya_ShippingComment/js/view/shipping/shipping-comment in the item tag in the given XML file.
2) Create a file to display comment text area using JS,
Path: app/code/Jesadiya/ShippingComment/view/frontend/web/js/view/shipping/comment.js
define([
'ko',
'uiComponent'
], function (ko, Component) {
'use strict';
return Component.extend({
defaults: {
template: 'Jesadiya_ShippingComment/shipping/comment'
}
});
});
3) Create a .html template file to display content,
Path: app/code/Jesadiya/ShippingComment/view/frontend/web/template/shipping/comment.html
<div class="comment-section">
<div class="step-title">
<span><!-- ko i18n: 'Delivery Instructions:'--><!-- /ko --></span>
</div>
<form id="special-comments-form" class="form comments" data-role="special-comments-form">
<fieldset class="fieldset special-comments">
<div class="field field-special-comments required">
<label for="comments" class="label">
<span class="label"><!-- ko i18n: 'Comments'--><!-- /ko --></span>
</label>
<div class="control">
<textarea id="comments"
class="input-text"
rows="5" cols="10"></textarea>
</div>
</div>
</fieldset>
</form>
</div>
4) Now run the CLI command,
php bin/magento setup:upgrade php bin/magento cache:flush

Check the result, By Adding Items to the cart, go to the checkout page, you can see new text area field will be displayed before the shipping methods.
