2017-01-17 21 views
0

私達はちょうどたくはありEメール購読フォームは、Webページにあります
誰かが送信ボタン、
に彼の電子メールやクリックを入ると私たちは、このページはフォームアクションのURLにリダイレクトされるようにしたくない、
送信ボタンのテキスト値を別のテキスト,
「Thank You!」のようなものに変換します。
どうすれば可能ですか?私はAJAXを経由する必要がありますか?またはjavascript?
フォーム送信時にブラウザが新しいページを開くのを防ぐにはどうすればいいですか?

<form class="ml-block-form" action="//app.mailerlite.com/webforms/submit/myownID" data-code="myownID" method="POST" target="_blank"> 
<div class="form-group ml-field-email ml-validate-required ml-validate-email"> 
    <input class="newsletter-email" type="email" name="fields[email]" placeholder="Email*"/> 
</div> 
<input type="hidden" name="ml-submit" value="1" /> 
<p> 
    <input class="newsletter-submit" type="submit" value="Get Updates!"/> 
</p> 

+4

削除 'ターゲット=「_ブランク」'ボタン – guradio

+0

?ちょうどテキストを変える?または、再ロードせずにすべてのデータをサーバーに送信したい場合は、送信を成功させた後にテキストを変更し、フォームを無効にしたい場合は、 – Zorken17

+0

に提出するそして、あなたはあらゆる種類のデータを掲載したくないから、入力タイプを変更する –

答えて

3

formタグからtarget="_blank"を削除してください。それはもともと非常に厄介だったので、私は、同様にあなたのHTMLを変更してある

$(".ml-block-form").submit(function(){ 
    var vals = $(this).serialize(); 

    $.ajax({ 
     url: "postpage.php", 
     method: "POST", 
     data: vals, 
     success: function(data) { 
      $("#formsubmit").val("Thank you!"); 
     } 
    }); 

    return false; // prevent from submit 
}); 

次に、あなたのjQueryの内、本の線に沿って何かをします。もちろん、あなたが必要な場合は戻って他の要素を追加することができます。

<form class="ml-block-form" action="" data-code="myownID" method="post"> 
    <input id="mainval" type="email" name="fields[email]" placeholder="Email*"> 
    <input id="hiddenval" name="ml-submit" value="1" /> 
    <input id="formsubmit" type="submit" value="Get Updates!"/> 
</form> 
+0

あなたは '$(this).serialize()'にデータを変更して変数宣言を取り除くことができます。 –

+0

@ axel.michel良いアイデア!一瞬で変わるだろう! :D –

+0

もう1つのアイデアは、AJAXパートのURLの値として '$(this).attr( 'action')'を使用し、HTMLコードから元の値を削除しないと、 javascriptの有無にかかわらず動作する可能性があります。 –

0

blank値が新しいwindowにリンクされたドキュメントを開きますので、あなたは、単にtarget="blank"を削除することができます:ここでは
フォームです。

+0

これはまだ新しいウィンドウではなくページをリロードしますが、避けたい新しいページの読み込みになります。 –

0

代わり

<button id="newsletter-submit" value="Get Updates!"/> 

は(私は idため classを変更したことに注意してください)使用
<input class="newsletter-submit" type="submit" value="Get Updates!"/> 

のそして、jQueryを使用してボタンのクリックを処理します:

$("#newsletter-submit").click(function() { 
    $(this).prop("value", "Thank You!"); 
    // do something else with the input values e.g. send them via ajax to a server script 
}); 
+0

ボタンに可視値がありません。このように、空のボタンを作成します。あなたは値を変更することができます... –

+0

あなたは正しく、 '.prop(...)'に変更しました – elementzero23

+0

はまだ間違っています。入力要素の反対側にはテキストやその他のHTMLタグが含まれています。これはあなたが見るものですので、「」とjQueryの部分に '$(this).text( 'ありがとう') '。とにかく、これはユーザーがエンターを押した場合でもフォームを送信します。 –

関連する問題