preventDefault (javascript)在wordpress中不起作用

preventDefault (javascript) not working in wordpress

本文关键字:wordpress 不起作用 javascript preventDefault      更新时间:2023-09-26

我需要javascript的帮助,我在woocommerce (checkout)的代码是:

<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。

谢谢!

您正在使用e.p preventdefault ();当必须是event.preventDefault();

看看validarDistrito(event),您将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将继续验证它的其余部分,所以如果输入值等于数组的一个值,您需要停止验证