#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.