2017-07-27 80 views
1

所以我有這種形式。我想檢查用戶是否驗證了驗證碼,但有問題。這是檢查函數的表單。表單仍然提交,嘗試使用e.preventDefault();

<form data-id="embedded_signup:form" id="myForm" class="ctct-custom-form Form" name="embedded_signup" method="POST" action="https://visitor2.constantcontact.com/api/signup" onsubmit="check_if_capcha_is_filled()"> 

以下是確定doSubmit(驗證碼)是否已驗證的功能。

function check_if_capcha_is_filled(e){ 
    if(doSubmit) return true; 
    e.preventDefault(); 
    alert('Fill in the capcha!'); 
    return false; 
}; 

但我得到一個錯誤

Uncaught TypeError: Cannot read property 'preventDefault' of undefined 
at check_if_capcha_is_filled 

任何指針,我缺少的是什麼?謝謝。

+0

'的onsubmit = 「返回check_if_capcha_is_filled(事件)」'更好的是,使用'addEventListener'並刪除過時的'上*'事件屬性 –

+0

地方'e.preventDefault();'在第一行內的函數 –

+0

刪除所有內聯js和css - 這是不好的做法,導致難以主要的代碼和意外的行爲也,你正在使用preventDefault,將張貼一個答案 – ThisGuyHasTwoThumbs

回答

1

你e.preventDefault正在使用不當。它不會做任何事情,因爲你傳遞一個事件給一個函數,你想把它連接到這樣的事件處理程序:

$('form').on('submit', function(e) 
{ 
    e.preventDefault(); 
    //rest of code 
}) 

這將停止提交動作。

裁判:http://api.jquery.com/event.preventDefault/

0

這裏有兩個問題。首先你需要return這個功能來自onsubmit事件attriubute。其次,你沒有把事件傳遞給函數 - 但是這隻會在全局事件可用的地方工作,也就是說,不是Firefox。

要解決此問題並改善您的邏輯,您可以改爲使用addEventListener()不顯眼地將事件處理程序添加到元素,並刪除過時的on*事件屬性。試試這個:

var doSubmit = false; 
 

 
document.getElementById('myForm').addEventListener('submit', function(e) { 
 
    if (doSubmit) 
 
    return; 
 
    
 
    e.preventDefault(); 
 
    alert('Fill in the capcha!'); 
 
});
<form data-id="embedded_signup:form" id="myForm" class="ctct-custom-form Form" name="embedded_signup" method="POST" action="https://visitor2.constantcontact.com/api/signup"> 
 
    <button type="submit">Submit</button> 
 
    <form>

0

使用on事件偵聽器

將其更改爲

<form data-id="embedded_signup:form" id="myForm" class="ctct-custom-form Form" name="embedded_signup" method="POST" action="https://visitor2.constantcontact.com/api/signup" > 

$('form').on('submit', function(e){ 
    // validation code here 
    if(!valid) { 
     e.preventDefault(); 
    } 
    }); 
1

這是你想要的嗎?

<form data-id="embedded_signup:form" id="myForm" class="ctct-custom-form Form" name="embedded_signup" method="POST" action="https://visitor2.constantcontact.com/api/signup"> 

然後在您的js文件:

function check_if_capcha_is_filled(){ 
    if (doSubmit){ 
     return true; 
    }else{ 
     return false; 
    } 
}; 

$('#myForm').on('submit', function(e){ 
    if (!check_if_capcha_is_filled){ 
     e.preventDefault(); 
    } 
}); 
0

使用jQuery,如果你想確認提交。

<button name="delete" class="submitbutton">Delete</button> 

$('.submitbutton').click(function() { 
    var buttonpressed; 
    buttonpressed = $(this).attr('name'); 
    var r = confirm("Please confirm to " + buttonpressed); 

    if (r == true) { 
     $('#yourformid').submit(); 
    } else { 
     return (false); 
    } 
}); 
相關問題