函数未在表单提交中定义

时间:2016-06-13 13:29:41

标签: javascript jquery forms validation

我在表单上有一个javascript应该执行以下操作:

  1. 有人必须按.aanpassen按钮解锁表单。
  2. 在页面加载时有一个检查。有些值不应该与上面提到的值相等,并且有一个值必须相同。 (checkStuff函数)
  3. 当更改.statuut或.land时,脚本应检查更改并重新绑定表单。
  4. 支票桶号码功能会检查增值税号码的正确性。
  5. 在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, NL001234567B01, 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 ('~@type_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 个答案:

答案 0 :(得分:1)

您不需要将任何这些功能放在document.onReady中。

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