【问题标题】:preventDefault (javascript) not working in wordpresspreventDefault(javascript)在wordpress中不起作用
【发布时间】:2016-10-22 22:12:41
【问题描述】:

我需要 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 也是如此。

谢谢!

【问题讨论】:

    标签: javascript php wordpress checkout


    【解决方案1】:

    您正在使用 e.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 将继续验证它的其余部分,因此如果输入值等于数组的值之一,则需要停止验证

    【讨论】:

    • 谢谢,我改了,还是没反应。
    • 谢谢,但它不起作用,我认为问题是与其他javascript冲突。我将使用 wordpress 插件最后一个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2018-07-07
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多