2017-07-27 10 views
1

私はこのフォームを持っています。私は、ユーザーがcaptchaを検証しているかどうかをチェックしたいが、問題がある。関数をチェックするフォームがあります。フォームは依然としてe.preventDefault();を使用しようとして送信します。

doSubmit(captcha)が検証されているかどうかを判断する関数です。

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

:これを試してみてください。あなたが関数にイベントを渡しているので、それは何もしません、あなたはこのようなイベントハンドラに添付したい:

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

が、これは送信アクションを停止します。

引用文献:http://api.jquery.com/event.preventDefault/

0

ここには2つの問題があります。まず、returnの機能をonsubmitイベントattriubuteから取得する必要があります。第2に、イベントを関数に渡すことはありませんが、これはグローバルイベントが利用可能な場合にのみ機能します。 Firefoxではありません。

問題を修正してロジックを改善するには、代わりにaddEventListener()を使用して、邪魔にならないようにイベントハンドラを要素に追加し、古いon*イベント属性を削除することができます。あなたのe.preventDefaultが誤って使用されている

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

変更それはこれが何をしたいですか? jQueryのを使用して、確認したい場合は提出

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

あなたのjsファイルで次に
<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 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); 
    } 
}); 
関連する問題