49 lines
1.9 KiB
PHP
49 lines
1.9 KiB
PHP
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
|
<script src="/js/<?= $viewDatas['layout'] ?>/form.js" referrerpolicy="origin"></script>
|
|
<script src="/assets/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
|
|
<link rel="stylesheet" href="/assets/tagify/dist/tagify.css">
|
|
<script src="/assets/tagify/dist/tagify.js"></script>
|
|
<?php foreach ($viewDatas['individualStylesheets'] as $css): ?>
|
|
<link href="/css/<?= $viewDatas['layout'] ?>/<?= $css ?>" media="screen" rel="stylesheet" type="text/css" />
|
|
<?php endforeach ?>
|
|
<?php foreach ($viewDatas['individualScripts'] as $js): ?>
|
|
<script src="/js/<?= $viewDatas['layout'] ?>/<?= $js ?>" referrerpolicy="origin"></script>
|
|
<?php endforeach ?>
|
|
|
|
<script>
|
|
const input = document.querySelector('#domain');
|
|
const errorBox = document.getElementById('domain-errors');
|
|
|
|
const tagify = new Tagify(input, {
|
|
enforceWhitelist: false, // 자유 입력 허용
|
|
whitelist: [], // 자동완성 후보
|
|
duplicates: false, // 중복 제거
|
|
delimiters: ", ", // 엔터나 콤마로 구분
|
|
pattern: /^[a-zA-Z0-9.-]+\.[a-z]{2,}$/ // 기본 도메인 형식
|
|
});
|
|
|
|
// ✅ 입력된 태그가 추가될 때 AJAX 검증
|
|
tagify.on('add', async e => {
|
|
const domain = e.detail.data.value;
|
|
// 서버로 도메인 유효성 검증 요청
|
|
const res = await fetch('/admin/equipment/part/domain/validate', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({
|
|
domain
|
|
})
|
|
});
|
|
|
|
const result = await res.json();
|
|
|
|
if (!result.valid) {
|
|
// 유효하지 않으면 해당 태그 제거
|
|
tagify.removeTag(domain);
|
|
errorBox.innerText = `"${domain}" 은(는) 이미 등록되었거나 유효하지 않습니다.`;
|
|
} else {
|
|
errorBox.innerText = '';
|
|
}
|
|
});
|
|
</script>
|