我的表单总是发送第一个选项

时间:2016-06-14 11:54:25

标签: php html radio

我有一个非常简单的HTML表单。表单连接到PHP文件,因此它将结果通过电子邮件发送给我。但我的单选按钮有问题。无论用户选择什么单选按钮,电子邮件总是说用户选择了第一个单选按钮。

我做了一些研究,我想我需要写“echo $ gender”。在某个地方的PHP文件中。我试过这个,Dreamweaver总是把它标记为语法错误。

以下是基本代码:

HTML:

<form>
<input type="radio" name="gender" id="gender" value="female" /> Female<br>
<input type="radio" name="gender" id="gender" value="male" checked /> Male<br>
</form>

使用Javascript:

$(function() {
$("input,textarea").jqBootstrapValidation({
    preventSubmit: true,
    submitError: function($form, event, errors) {
        // additional error messages or events
    },
    submitSuccess: function($form, event) {
        // Prevent spam click and default submit behaviour
        $("#btnSubmit").attr("disabled", true);
        event.preventDefault();

        // get values from form
        var gender = $("input#gender").val();

        $.ajax({
            url: "././mail/contact_me.php",
            type: "POST",
            data: {gender: gender},
            cache: false,
            success: function() {
                // Enable button & show success message
                $("#btnSubmit").attr("disabled", false);
                $('#success').html("<div class='alert alert-success'>");
                $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                $('#success > .alert-success')
                    .append("<strong>Your message has been sent. </strong>");
                $('#success > .alert-success')
                    .append('</div>');

                //clear all fields
                $('#contactForm').trigger("reset");
            },
            error: function() {
                // Fail message
                $('#success').html("<div class='alert alert-danger'>");
                $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                $('#success > .alert-danger').append("<strong>Sorry, it seems that my mail server is not responding. Please try again later!");
                $('#success > .alert-danger').append('</div>');
                //clear all fields
                $('#contactForm').trigger("reset");
            },
        })
    },
    filter: function() {
        return $(this).is(":visible");
    },
});

$("a[data-toggle=\"tab\"]").click(function(e) {
    e.preventDefault();
    $(this).tab("show");
});
});

PHP:

<?php   
$gender = $_POST['gender'];
// Create the email and send the message
$to = 'me@myemailaddress.com'; 
$email_subject = "New message from contact form";
$email_body = "Gender: $gender \n\nPress 'reply' to respond to the sender.";
$headers = "From: me@myemailaddress\n";
return true;            
?>

4 个答案:

答案 0 :(得分:1)

两个ID都是相同的,这将导致很大的问题。 ID应始终在页面上是唯一的。它找到了第一个,因为id首先与它绑定。

答案 1 :(得分:0)

如果你使用jquery获取复选框的值然后你需要获得选中的单选按钮值

,你需要像$gender = $_REQUEST['gender'];这样使用php代码

对于jQuery,你可以这样:

var gender = jQuery('input[name="gender"]:checked').val();

答案 2 :(得分:0)

我猜你的意思是jQuery而不是PHP。此外,您正在寻找的是:

<form>
    <input type="radio" name="gender" class="gender" value="female" /> Female<br>
    <input type="radio" name="gender" class="gender" value="male" checked /> Male<br>
</form>

var gender = $("input.gender:checked").val();

我所做的是将id #更改为class .。我在您的jQuery选择器中添加了:checked,因此它将始终获取所选项目。

祝你好运!

答案 3 :(得分:0)

请尝试使用以下代码获取所选的性别单选按钮。

&#13;
&#13;
   $(document).ready(function(){
     $('input[type=radio][name=gender]').change(function() {
      var c= $("input[name='gender']:checked").val();
     alert(c)
     });
   });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
     <input type="radio" name="gender" class="gender" value="female" /> Female<br>
     <input type="radio" name="gender" class="gender" value="male" checked /> Male<br>
    </form>
&#13;
&#13;
&#13;