2

嗨,我有一个表格,数据发布了一些奇怪的东西......

HTML:

<form>
   <input type="radio" name="datatype" value="1"/> <label>Datatype 1</label>
   <input type="radio" name="datatype" value="2"/> <label>Datatype 2</label>
   <button type="submit">Submit</button>
</form>

表格 1:

$('form').submit(function(){
    var dt = $(this).serializeArray();
    $.ajax({
        url: 'post.php',
        data: dt,
        ..................
    })
})

表格 2:

  $('form').submit(function(){
    var opt = $(['input[name=datatype]').val();
    var dt = [{name:'dtype',value: opt }];

    $.ajax({
        url: 'post.php',
        data: dt,
        ..................
    })
})

在 FORM 1 数据类型中正确发布正确的值 1 或 2。在这部分中,我使用的是序列化数组。现在奇怪的是,如果您选择数据类型 2,它总是在 FORM 2 上发布值 1。出于某种原因,我需要使用 FORM 2...如果有人能提供帮助,我很高兴。谢谢

4

2 回答 2

3

你应该试试这个:

$('form').submit(function(){
    var opt = $('input[name=datatype]:checked').val();
    var dt = [{name:'dtype',value: opt }];

    $.ajax({
        url: 'post.php',
        data: dt,
        ..................
    })
})

为什么你的 FORM2 代码总是得到1

默认情况下,它根据 DOM 中的顺序获取值。与首先出现一样radiovalue="1"因此它选择值1,尽管您选择了radiowith value="2"


更正您的代码

你的$(['input[name=datatype]').val();说法是错误的。它应该

$('input[name=datatype]:checked').val();这将获得选中radio按钮的值。

您的选择器也可能是:

$(':radio:checked[name=datatype]').val()

工作样本

于 2012-07-20T03:31:00.930 回答
1

首先,方括号开头给出的错误是无处关闭的。

对于您的问题,那是因为 DOM 按名称顺序选择元素。由于值 1 首先出现,因此它被选中。因此,您必须添加一个过滤器以选择已选中的过滤器。

所以,更换,

    var opt = $(['input[name=datatype]').val();

    var opt = $('input[name=datatype]:checked').val();
于 2012-07-20T03:39:44.093 回答