0

名前または姓を入力したままにしておくと、入力の横にエラーが表示されるサインアップ フォームを作成しました。ラジオ入力でも同じことを行いました。すべてが機能していますが、送信ボタンをクリックするとエラーが発生します。点滅して離れます。ボタンの種類は送信ですコードを書き留めています

function SignUp() {
var firstname = $("#firstname").val();
var lastname = $("#lastname").text();
var date = $("#dd option:selected").text();
var month = $("#mm option:selected").text();
var yy = $("#yy option:selected").text();
var sex = $("input:radio[name=sex]:checked").val();
     if ($.trim($("#firstname").val()) == "") {
    document.getElementById("firstnameerror").innerHTML = "Please write firstname";



    if ($.trim($("#lastname").val()) == "") {
    document.getElementById("lastnameerror").innerHTML = "Please write lastname";



    if (!$("input[name='sex']:checked").val()){
    document.getElementById("gendererror").innerHTML = "Please select your gender";

       }

    }
      }
 }
4

2 に答える 2

1

問題は、送信中のフォームのデフォルトの動作を妨げないことです。これを試してください(簡略化されたコード):

function SignUp(e) {
    var firstname = $("#firstname").val();
    var lastname = $("#lastname").text();

    if ($.trim($("#firstname").val()) == "") {
        $("#firstnameerror").text("Please write firstname");
        e.preventDefault(); // <!-- prevent form submit in case of errors
    }
    else {
        $("#firstnameerror").text('');
    }

    if ($.trim($("#lastname").val()) == "") {
        $("#lastnameerror").text("Please write lastname");
        e.preventDefault();
    }
    else {
        $("#lastnameerror").text("");
    }
}

$('#form').submit(SignUp)

http://jsfiddle.net/fh6Ar/

また、クリックイベントを送信ボタンにバインドしないでください。フォームには、この の特別なイベントがありますsubmit event

于 2013-10-27T15:58:33.830 に答える
0

SignUp()送信ボタンがクリックされたときに関数を呼び出すときreturn falseは、フォームが送信されないようにする必要があります。

jquery を使用すると、次のように簡単に実行できます。

$('#submitButtonId').click(function(){

 SignUp();
 return false;

})

JavaScript 検証の直後にすべてがうまくいけば、次のことができます。

$(#myFormId).submit();

または単純に:

<input type="submit" name="send" value="SEND" onclick="SignUp(); return false;" />
于 2013-10-27T15:51:24.627 に答える