5

index.php:

<form id = "regform" action = "registration.php" method = "POST">
    <label id = "namelabel">Username: </label> <input type = "text" name = "username" class = "username" maxlength = "40" placeholder = "Enter a Username"><br>
    <label id = "namelabel">Password: </label> <input type = "password" class = "password" name = "password" placeholder = "Enter Password"><br>
    <label id = "namelabel">Gender: </label>
    <input type="radio" name="gender" value = "Male"> Male
    <input type="radio" name="gender" value = "Female"> Female
    <label id = "namelabel">Email: </label> <input type = "text" name = "email" class = "email" placeholder = "Enter your Email"><br>
    <a href="#" title="Register" id = "register" style = "margin-left:25px;">Register</a>
</form>

$("#register").click(function () {
    $.post($('#regform').attr("action"), $('#regform').serializeArray(), function (data) {
        if (data == 'checkradio') {
            $('#regmsg').html('Please choose a gender.');
        }
    });
});

サーバ側:

$required_fields = array('username','password','gender','email');
foreach($_POST as $key =>$value) {
    if(empty($value) && in_array($key, $required_fields) === true){
        echo 'checkradio';
    }
}

ラジオ ボタン以外のすべてをシリアル化します。何が問題ですか?

4

7 に答える 7

4

@undefined があなたに言ったように、チェックされていないチェックボックスとラジオは送信されません。

性別フィールドのデフォルトのチェック状態が必要ない場合は、ラジオの前に同じ名前で値が空の非表示の入力フィールドを追加します。

<input type="hidden" name="gender" value="" /> 

フォームは順次処理されるため、ラジオがチェックされている場合、その値は非表示の入力値を上書きします

于 2013-02-10T03:09:54.820 に答える
3
<input type="radio" name="gender" value="" style="display:none;" checked>

このような追加のラジオ オプションを追加すると、値は何も表示されず、ユーザーには表示されません。

@Larzan の提案に従って、「checked」を追加するように更新されました。ありがとう!

于 2015-09-09T01:04:09.470 に答える