preventDefault (javascript) не работает в wordpress

#javascript #php #wordpress #checkout

#javascript #php #wordpress #Оформить покупку

Вопрос:

Мне нужна помощь в javascript, мой код в woocomerce (оформление заказа):

 <script type="text/javascript">
document.getElementById("billing_city").onkeyup = function validarDistrito(event){
    // do stuff
    var billinginfo = document.getElementsByName("billing_city")[0].value;
	var distritoArray= ["Barranco","Breña","Jesús María","La Victoria","Lince","Miraflores","Pueblo Libre","San Borja","San Isidro","San Luis","San Miguel","Surco","Surquillo","Callao","La Molina","Lima Cercado","Magdalena", "Rimac", "Lima Metropolitana"];
	
    console.log(billinginfo);
    for (i = 0; i < distritoArray.length; i  ) {
        if(distritoArray[i].toUpperCase() == billinginfo.toUpperCase()){
            document.getElementById('payment_method_bacs').disabled = false;
            alert('igual');
        }else{
            document.getElementById('payment_method_bacs').disabled = true;
        }
     }
     event.preventDefault();
}
</script>  

Код работает очень хорошо, но затем через несколько секунд он обновляется и возвращается к предыдущему состоянию. И я использую метод preventDefault (); но он не работает в WordPress.

PD: то же самое справедливо при использовании jquery.

Спасибо!

Ответ №1:

Вы используете e.preventDefault(); когда это должно быть event.preventDefault();

взгляните на validarDistrito(событие), вы назвали переменную event

попробуйте этот код

 <script>
document.getElementById("billing_city").onkeyup = function validarDistrito(event){
    // do stuff
    var billinginfo = document.getElementsByName("billing_city")[0].value;
    var distritoArray= ["Barranco","Breña","Jesús María","La Victoria","Lince","Miraflores","Pueblo Libre","San Borja","San Isidro","San Luis","San Miguel","Surco","Surquillo","Callao","La Molina","Lima Cercado","Magdalena", "Rimac", "Lima Metropolitana"];

    console.log(billinginfo);
    for (i = 0; i < distritoArray.length; i  ) {
        if(distritoArray[i].toUpperCase() == billinginfo.toUpperCase()){
            document.getElementById('payment_method_bacs').disabled = false;
            return;
        }else{
            document.getElementById('payment_method_bacs').disabled = true;
        }
     }
     event.preventDefault();
}
</script>
  

дело в том, что distroArray будет продолжать проверять оставшуюся часть, поэтому, если входное значение равно одному из значений массива, вам нужно прекратить проверку

Комментарии:

1. Спасибо, я изменил его, но по-прежнему не отвечает.

2. Спасибо, но просто это не работает, проблема в конфликте с другим javascript, я думаю. Я буду использовать последний вариант плагина WordPress.