• 28-02-2024, 01:20:16
    #1
    Merhabalar, kesinlikle ücretli yardım edebilirim diyenler yazmasın. Ufak bir konuda takıldım. Woocommerce alt tabanlı bir websitesi yapıyorum. Ödeme form kısmında telefon numarası kısmına harflerde ekleniyor. 50 tane rakamda ekleniyor. Bunu düzelttim. Artık 10 karakterli oldu. Sadece rakam ekleniyor. Ancak düzeltemediğim ve bağlayamadığım bir husus var. Java kodu yazdım genede işe yaramadı. Aşağıya kodları bırakıyorum. Nerede hata yapıyor olabilirim? Düzeltemediğim husus 555a yazdığımda form kırmızıya dönüşüyor aaaa yazdığımda form kırmızıya dönüşüyor ancak eksik karakter rakam girdiğimde form kırmızı olmuyor. Yukarıya hata mesajı verdirtiyorum ancak formu bir türlü kırmızıya dönüştüremedim.
    add_filter( 'woocommerce_checkout_fields', 'customize_phone_field_format' );
      
    function customize_phone_field_format( $fields ) {
        $fields['billing']['billing_phone']['label'] = 'Telefon';
        $fields['billing']['billing_phone']['placeholder'] = '5555555555';
        $fields['billing']['billing_phone']['required'] = true;
        $fields['billing']['billing_phone']['type'] = 'tel';
        $fields['billing']['billing_phone']['class'] = array('form-row-wide');
        $fields['billing']['billing_phone']['maxlength'] = 10;
        $fields['billing']['billing_phone']['minlength'] = 10;
        $fields['billing']['billing_phone']['pattern'] = '[0-9]*';
        $fields['billing']['billing_phone']['validate'] = array('phone');
        return $fields;
    }
    
    add_action('woocommerce_after_checkout_validation', 'phone_field_validation', 10, 2);
    function phone_field_validation( $data, $errors ) {
        if ( !isset( $_POST['billing_phone'] ) || empty( $_POST['billing_phone'] ) || strlen( $_POST['billing_phone'] ) < 10 ) {
            $errors->add( 'billing_phone_error', __( 'Telefon numarası 10 karakterden az olamaz.', 'woocommerce' ) );
            add_action( 'wp_footer', 'add_custom_js_to_checkout' );
        }
    }
    
    function add_custom_js_to_checkout() {
        if ( is_checkout() && ! is_wc_endpoint_url() ) {
            ?>
            <script type="text/javascript">
                jQuery(document).ready(function($) {
                    $('#billing_phone').addClass('input-error');
                });
            </script>
            <?php
        }
    }





  • 28-02-2024, 01:49:20
    #2
    function add_custom_js_to_checkout() {
        if ( is_checkout() && ! is_wc_endpoint_url() ) {
            ?>
            <script type="text/javascript">
                jQuery(document).ready(function($) {
                    $('#billing_phone').on('input', function() {
                        var phoneInput = $(this).val();
                        if (phoneInput.length !== 10 || !$.isNumeric(phoneInput)) {
                            $(this).addClass('input-error');
                        } else {
                            $(this).removeClass('input-error');
                        }
                    });
                });
            </script>
            <?php
        }
    }
    ekleyip dener misin?
  • 28-02-2024, 01:51:24
    #3
    Çözdüm hocam teşekkür ederim. Moderatörlere bildirdim konu kilitlenir. Merak edenler yapamayanlar olursa da pmden ulaşabilirler gerekli kodu gönderirim.