Merhaba kendim için ChatGPT'ye yazdırdım. Sizede lazım olur diye paylaşıyorum. Kod WPForms'da sayı alanı eklediğiniz yerde sayı alanına CSS olarak
wpf-num-limit eklediğinizde ve aşağıdaki kodu funcations.php dosyasına eklediğinizde sayı alanı en az 11 hane en çok 11 hane girilmesi zorunlu hale gelir. Ayrıca Yanlış TC girmelerini engellemek içinde fonksiyon TC doğrulaması yapar.
/**
* Validate Turkish ID Number (T.C. Kimlik Numarası) for a specific input field.
* Enforce exact 11-character length with custom error messages.
* Apply the class "wpf-num-limit" to the field to enable.
*/
function wpf_dev_tckn_validation() {
?>
<script type="text/javascript">
jQuery(function() {
// Validate T.C. Kimlik Number (Turkish ID)
function isValidTCKN(tckn) {
if (tckn.length !== 11) return false;
if (!/^\d+$/.test(tckn)) return false;
if (tckn[0] === '0') return false;
let totalOdd = parseInt(tckn[0]) + parseInt(tckn[2]) + parseInt(tckn[4]) + parseInt(tckn[6]) + parseInt(tckn[8]);
let totalEven = parseInt(tckn[1]) + parseInt(tckn[3]) + parseInt(tckn[5]) + parseInt(tckn[7]);
let checkSum10 = ((totalOdd * 7) - totalEven) % 10;
if (checkSum10 !== parseInt(tckn[9])) return false;
let totalAll = totalOdd + totalEven + parseInt(tckn[9]);
let checkSum11 = totalAll % 10;
if (checkSum11 !== parseInt(tckn[10])) return false;
return true;
}
// Apply validation on input event and form submit
jQuery('.wpf-num-limit input').on('input', function() {
let tckn = jQuery(this).val();
// Limit input to exactly 11 characters
if (tckn.length > 11) {
jQuery(this).val(tckn.slice(0, 11));
}
// Check if input length is exactly 11 and valid T.C. Kimlik Number
if (tckn.length < 11) {
jQuery(this)[0].setCustomValidity('Lütfen 11 Haneli TC kimlik numaranızı giriniz.');
} else if (!isValidTCKN(tckn)) {
jQuery(this)[0].setCustomValidity('Lütfen Doğru T.C. kimlik numarası giriniz.');
} else {
jQuery(this)[0].setCustomValidity('');
}
});
jQuery('.wpf-num-limit input').closest('form').on('submit', function(e) {
let inputField = jQuery(this).find('.wpf-num-limit input');
if (inputField.val().length !== 11) {
e.preventDefault();
inputField[0].setCustomValidity('Lütfen 11 Haneli TC kimlik numaranızı giriniz.');
inputField[0].reportValidity();
} else if (!isValidTCKN(inputField.val())) {
e.preventDefault();
inputField[0].setCustomValidity('Lütfen Doğru T.C. kimlik numarası giriniz.');
inputField[0].reportValidity();
}
});
});
</script>
<?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_tckn_validation', 30 );