2017-08-15 7 views
0

ユーザーがボタンをクリックしてHTMLフォームを送信すると、(メールアドレスを取得するために使用された)入力のいずれかにコンテンツが含まれているかどうかを確認したいと思います。 (つまり、ユーザーは自分のメールアドレスを入力していますか?)投稿する前に空のフォームフィールドを更新する

もしそうなら、フォームを提出してください。

入力されていない場合は、ユーザーには表示されないもの(例:[email protected])を入力してからフォームを送信してください。

私はいくつかのことを試しましたが、私はフォームのサブミット部分を中断するようです。

+2

*入力されていない場合は、ユーザーには表示されていないもの([email protected]など)を入力してフォームを送信してください。それは非効率的で、プラス電子メールアドレスは一意でなければならないので、ユーザーが記入しないたびに同じメールでそのフィールドを記入する必要はありません。メールアドレスは**必須** –

+1

あなたはあなたの質問に[mcve]を提供しましたか? –

+1

このフォームのonsubmitイベントを代行受信し、入力が無効な場合はfalseを返します。 – tibetty

答えて

1

フォームは提出され、それはとにかくリフレッシュされます。

私は、結果がrem変数に割り当てられたランダム電子メールジェネレータを含むようにコードを変更しました。それは非常に簡単です。

var rem = Array.from({length:15}) // generate an empty array of length 15 
       .reduce(r => Math.floor(Math.random()*10) + r,"@hello.com"); 

それは長さ15(Array.from({length:15}))のアレイを生成し、コールバックでrある"@hello.com"の初期値に減少させます。各ターンでは、初期値("@hello.com")に0-9の間のランダムな整数が付加され、[email protected]のような電子メールアドレス文字列が返されます。

+0

この回答に感謝します。私は最初にそれを試してみました。それはうまくいった。電子メールが@ hello.comのあとに続く15個の数字のランダムな文字列になるように、コードを変更する方法を教えてもらえますか?例:[email protected] – Ben

+0

@Benありがとうございます。ランダムなメールアドレス文字列ジェネレータを組み込むようにコードを修正しました。答えの最後に説明が添付されています。 – Redu

+1

多くのありがとう。完璧に作業し、非常に感謝します。 – Ben

0
  • は、そのハンドラ関数
  • 戻りtrue内のあなたの検証を実行し、クライアント側で(サーバー呼び出しを行う)ボタンのonClickハンドルあなたがに満足している場合(サーバーの呼び出しを続行)検証に満足できない場合は、
  • false(サーバーコールのキャンセル)を返します。検証が失敗したときにあなたには、いくつかのデフォルト値でサーバーの呼び出しを続行する場合さて、あなたはtrueを返す前にクリックハンドラでそれらを記述する必要があり

1

フォームのsubmitイベントを聞くだけで、フィールドが空でないことを確認してください。そうであれば、サーバに送るinput[type="hidden"]にデータを保存することができます。

私はe.preventDefaultを使用していますので、フォームは送信されません。

document.querySelector('form').addEventListener('submit', function(e) { 
 
    e.preventDefault(); 
 
    var email = e.target.email.value; 
 
    if (!email) { 
 
    document.querySelector('#hidden').value = '[email protected]'; 
 
    } 
 
    
 
    console.log(document.querySelector('#hidden').value); 
 
});
<form> 
 
    <input type="hidden" id="hidden" /> 
 
    <input name="email" type="text" placeholder="email" /> 
 
    <button>Submit</button> 
 
</form>

+0

実際に質問には、電子メールフィールドに何もない場合でもフォームを提出したいと言っています – Winnie

+0

@ankit_sharma私は知っている、私はこれを私の答えに言及します。私はただ彼がその影響を見ることができたかっただけです。フォームが提出されると、彼はそれを見ることができませんでした。 –

0

私はあなたがこのようなものであってもよいし、あなたのHTMLで送信ボタンを持っているとします。この中にあなたがロジックに何かを追加することができ、

<input type="submit" value="submit" onClick="checkInputFields()" /> 

ご注意checkInputFields機能へこれらの行に沿って:

function checkInputFields() { 
    // your usual submit logic 
    var emailAddress; 
    emailAddress = document.getElementById("emailAddressID").value; 
    if (emailAddress == "") { 
     //email address is not present 
     // create a unique dummy email address 
     var emailAddress = "DummyEmail" + Math.floor((1 + Math.random()) * 0x10000) 
    .toString(16) 
     .substring(1)+ "@hello.com" 

    }; 
} 

電子メールIDは実際には一意ではありませんが、これは出発点になるはずです。

何も

document.querySelector('form') 
 
     .addEventListener('submit', function(e){ 
 
             var rem = Array.from({length:15}) 
 
                .reduce(r => Math.floor(Math.random()*10) + r,"@hello.com"); 
 
             e.target.em.defaultValue = rem; 
 
             console.log(e.target.em.value); 
 
            });
<form> 
 
    <label>email:</label> 
 
    <input name="em" type="email" placeholder="[email protected]" /> 
 
    <button type="submit">Submit</button> 
 
</form>

と一度に入力されていない場合は、入力要素にデフォルト値をasignnますあなたはまた、名前が示すように、入力要素のdefaulValueプロパティを使用することができ

関連する問題