我是Laravel Livewire的新手.我正在try 保留一个表格字段,其中我正在使用intlTelImpusion JS库在电话号码之前添加国家代码.
我在app.js中添加了JS代码,大致是这样的.
import intlTelInput from 'intl-tel-input';
const elementsWithPhoneId = document.querySelectorAll('[id="phone"]');
elementsWithPhoneId.forEach(element => {
const iti = intlTelInput(element, {
initialCountry: "bh",
separateDialCode: true,
onlyCountries: ['bh', 'sa', 'ae', 'qa', 'kw', 'om', 'us', 'gb'],
utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@21.1.1/build/js/utils.js",
});
});
组件中的字段看起来像这样
<div class="flex flex-wrap lg:flex-nowrap justify-center w-full">
<div class="w-full py-2 lg:w-1/2 md:w-1/2 px-2 grid grid-cols-1">
<label for="inputC1P1" class="w-full font-medium py-1">Primary Phone : <span class="text-red-600"> *</span></label>
<input
required
type="tel"
class="form-input border border-1 rounded-md w-full my-1 border-gray-300 shadow-md hover:transition-all"
id="phone"
placeholder="3344 5566"
wire:model.blur="C1PrimaryContact"
/>
<div>
@error('C1PrimaryContact') <p class="text-red-600 font-light text-xs antialiased italic">{{ $message }}</p> @enderror
</div>
</div>
<div class="w-full py-2 lg:w-1/2 md:w-1/2 px-2 grid grid-cols-1">
<label for="inputC1P2" class="w-full font-medium py-1">Secondary Phone :</label>
<input
type="tel"
class="form-input border border-1 rounded-md w-full my-1 border-gray-300 shadow-md hover:transition-all"
id="phone"
placeholder="3344 5566"
wire:model.blur="C1SecondaryContact"
/>
<div>
@error('C1SecondaryContact') <p class="text-red-600 font-light text-xs antialiased italic">{{ $message }}</p> @enderror
</div>
</div>
</div>
当组件第一次加载时,它的加载完全正常.然而,一旦我们更改某些内容或提交表单,它就会停止工作,整个app.js就会停止工作.
我已经做了一些替代方案,例如在具有@script @endscript
个Blade 指令的组件内添加JS代码,甚至apply.
document.addEventListener('livewire:init', () => {})
到目前为止,还需要其他东西.我是否缺少任何内容,或者我需要在Livewire设置中配置某些内容?