2016-06-13 77 views
0

我有一个应该做以下表单上一个javascript:功能提交

  1. 必须有人按.aanpassen按钮解锁方式。
  2. 页面加载时有一个检查。有些价值观不应该等同于所提及的东西,并且有一个价值观必须是相同的。 (checkStuff函数)
  3. 当.statuut或.land已更改时,脚本应检查更改并重新绑定表单。
  4. 检查增值税号码功能检查增值税号码的正确性。

在chrome中执行时,在提交表单时出现以下错误。 error testVATNumber is not defined

有没有人知道我为什么得到这个错误?

$(document).ready(function(){ 
    function testVATNumber() { 

    var newVATNumber = checkVATNumber (document.getElementById('vat').value); 
    if (newVATNumber) { 
     document.getElementById('vat').value = newVATNumber; 
     return true; 
    } 
    else { 
     $(".validation-error#error").text("Dit is geen geldig BTW nummer."); 
     $(".validation-error#detail").text("Vergeet de landscode niet (en voor België de leidende '0'). Gebruik ook geen punten of spaties. bv. BE0409773728, NL0B01, etc."); 
     $(".validation-error#error").css("color", "red"); 
     $(".validation-error#detail").css("color", "red"); 
     return false; 
    }; 
    }; 


    function checkStuff() { 
    if (document.getElementById('statuut').value != 'Gepensioneerd/Op rust' 
    && document.getElementById('statuut').value != 'Niet-Actief' 
    && document.getElementById('statuut').value != 'Student' 
    && document.getElementById('statuut').value != 'Werkzoekend' 
    && document.getElementById('land').value == '4cce53c0-20bb-e311-840c-005056040a5f') { // België 
     $("form").bind("submit", testVATNumber); 

     $("#vat").parent().show(); 
     $(".validation-error#error").show(); 
     $(".validation-error#detail").show(); 
     $("form").bind("submit", testVATNumber); 
    }; 

    else { 
     $("#vat").parent().hide(); 
     $(".validation-error#error").hide(); 
     $(".validation-error#detail").hide(); 
     $("form").unbind("submit", testVATNumber); 
    }; 
    }; 


    if ('[email protected]_correctie~'=='verplicht') { 
    $('input').prop('disabled', true); 
    $('select').prop('disabled', true); 
    $("button.bevestigen").hide(); 
    $(".aanpassen-letop").hide(); 


    $(".aanpassen").click(function(){ 
     $('input').prop('disabled', function(i, v) { return !v; }); 
     $('select').prop('disabled', function(i, v) { return !v; }); 
     $("button.bevestigen").show(); 
     $(".aanpassen").hide(); 
     $(".aanpassen-letop").show(); 

     checkStuff(); 
     $("#statuut").change(checkStuff()); 
     $("#land").change(checkStuff();); 
    }); 
    }; 
    else { 
    $("form").bind("submit", testVATNumber); 
    }; 
}); 
+1

你的JS坏了:'checkStuff()'中有语法错误 - 在'else'之前移除';'。 'testVATNumber()'的末尾相同。 –

+0

谢谢@ mpf82修复它。我将重读如何使用';'符号。这些对我来说还是新的。 – Christoph

+0

还将checkStuff重构为分配给'.on(“submit”,function(){}'的提交事件处理程序,并使用e.preventDefault()停止提交并使用$(“#...”).val ()而不是document.getElementById – mplungjan

回答

1

您不需要任何这些函数在document.onReady中。

在document.ready作用域中声明的任何函数也必须从其中调用。如果不是,那么在ready()方法退出时它们会丢失该范围。所以它不存在于你试图调用它的范围内,因此你的错误。