2016-06-13 91 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()方法退出時它們會丟失該範圍。所以它不存在於你試圖調用它的範圍內,因此你的錯誤。