2016-06-20 1 views
1

を使用して、特定のIDを取得する:私は上記のコードのようなもの4つの答え、変更は私のdiv内の値であることを唯一の事をしましたは私がそのようなコードましたjqueryの

<div class="answer_id" value="1" name="false"> 
    <input id="AsnwerAnswer1" type="checkbox" value="1" name="true"></input> 
    Answer 1 
</div> 

をし、入力IDです。私は答え送信するボタンをクリックすると

$("input:checkbox").click(function() { 
    var thisChecked = $(this)[0].checked; 
     $("input:checkbox").removeAttr('checked'); 
     $("input:checkbox").attr('name', 'false'); 
     $(this).attr('name', 'true'); 
     $(this)[0].checked = thisChecked ? true : false; 
}); 

::私は選択したチェックボックスが値がtrue取得するチェックボックスをクリックすると

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

を私は値を取得したいと思います選択されたチェックボックス(その値が真であるもの)を含むdivの

私はこれまで何を追加する必要があります:あなたは私をクリック機能が何をするのか理解するのに役立つことができれば、それは本当に素晴らしいことだちなみに

var iReponseId = $(this).closest('.answer_id').attr('value'); 

$(this)[0].checked = thisChecked ? true : false; 
: は私によると、このすべてのatrributesを削除するにはので、私は唯一のチェックボックスが選択され得ることができますチェックし、これが選択されているが、私はこのことを理解していないいずれかの期待をfalseにすべてのチェックボックスに名前を設定します

EDIT:

私は私が欲しかったものを手に入れるためにこれをやった:

$("input:checkbox").click(function() { 
     $("input:checkbox").not(this).prop('checked',false).removeAttr('class', 'chosen_answer'); 
     $(this).attr('class', 'chosen_answer'); 
    }); 

そして

$('#sendReponse').click(function(){ 
var iReponseId = $('.chosen_answer').closest('.answer_id').attr('value'); 
+1

$(this)[0] .checked; === 'this.checked; ' –

+0

' $(this)[0] .checked = thisChecked? true:false; 'は、チェックされたプロパティを削除した後、以前の状態にロールバックしています....' this.checked = thisChecked'でこれを減らすことができます –

+0

ラジオボタンがこのために発明されたのはなぜですか? – trincot

答えて

2

コードで$(this)[0].checked = thisChecked ? true : false;は、チェックされたプロパティを削除した後、以前のチェック済みプロパティの状態をロールバックするのに役立ちます。this.checked = thisCheckedとして減らすことができます。


入力が含まれているdiv要素を取得するための

// use change event always for chekbox 
$("input:checkbox").change(function() { 
    // get all checkbox 
    $("input:checkbox") 
     .not(this) // ignore the clicked checkbox 
     .prop('checked',false) // uncheck the checkbox 
     .attr('name', 'false'); // set the attribute 
    $(this).attr('name', 'true'); // set name of clicked 
}); 

を次のようにあなたの全体のコードを減らすことができ、あなたはanswer_idクラスではないresponse_idを使用する必要があります。 FYI

var iReponseId = $(this).closest('.answer_id').attr('value'); 

常に標準data-*形式を使用するカスタム属性を使用している間。

+0

私のコードでは、これは応答でした。私はあなたと同じコードを持っている瞬間にそれを翻訳しました。問題は、コードのこの部分がクリック機能にないことです。これは、答えを送る。ユーザーがA、B、Aなどをクリックした場合、私のajaxは何時間も働くので、この2つを一緒に働かせることはできません。 –

+0

@JulienS:AJAXの成功後にユーザーがクリックできるようにする –

+0

他の方法でもそれが良いと思うなら、それはできません。問題は私がアンケートをしたことです。誰かがこの回答をクリックすると、この情報を保持しているので、ある人が「回答を送る」をクリックして自分の選択を確認し、いくつかのajaxで結果を返します。 –

関連する問題