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のいずれかの正しい値で適切に投稿します。この部分では、serialize配列を使用しています。データ型2を選択すると、常に1の値が送信されるという奇妙なことがFORM2にあります。何らかの理由でFORM2を使用する必要があります...誰かが助けてくれたらうれしいです。ありがとう

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の順序に従って値を取得します。radiowithが最初に来るので、withを選択value="1"しますが、値1を選択radioします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 に答える