2012-06-15 16 views
11

चुनने से पहले चुना गया रेडियो बटन का मान प्राप्त करें यदि मेरे पास 3 रेडियो बटन हैं, तो क्या उपयोगकर्ता द्वारा नए पर क्लिक करने से पहले चुने गए एक के मूल्य को खोजने के jQuery के माध्यम से एक तरीका है एक?उपयोगकर्ता द्वारा एक नया

<div id="radio-group"> 
    <input type="radio" id="radio-1" name="radios" value="1" checked="true" /> 
    <input type="radio" id="radio-2" name="radios" value="2" /> 
    <input type="radio" id="radio-3" name="radios" value="3" /> 
</div> 

उदाहरण avove में, उपयोगकर्ता radio-3 पर क्लिक करता है तो मैं 1 पाने के लिए एक तरह से की जरूरत है, ताकि मैं इसे करने के लिए कुछ formattion बाहर ले जा सकता है। धन्यवाद।

+0

सहेजें कुछ चर जब उपयोगकर्ता उस पर क्लिक में मूल्य ,, इस जिस तरह से आप अगले क्लिक –

उत्तर

8

मैं एक सरणी को दबाया मान बचाने के लिए और उस के साथ छिपा मूल्य संपादित करनी होगी।

http://jsfiddle.net/BQDdJ/6/

एचटीएमएल

<div id="radio-group"> 
    <input type="radio" id="radio-1" name="radios" value="1" checked="true" /> 
    <input type="radio" id="radio-2" name="radios" value="2" /> 
    <input type="radio" id="radio-3" name="radios" value="3" /> 
    <input type="hidden" id="radio-previous" name="radio-previous" /> 
</div>​ 

जावास्क्रिप्ट

$(document).ready(function(){ 
    var clicks = new Array(); 
    clicks[0] = 1 //this should be the default value, if there is one 

    $('input[name$="radios"]').change(function(){ 
     clicks.push($(this).val()) 
     $('#radio-previous').val(clicks[clicks.length-2]) 
    }) 
}) 

+0

स्पॉट पर, टिप के लिए धन्यवाद। –

+2

'क्लिक [0] = 1' के बजाय आप 'क्लिक [0] = $ (' इनपुट [नाम =" रेडियो "] [चेक =" सत्य "] ') कर सकते हैं। वैल();' जो वापस करेगा जावास्क्रिप्ट में इसे हार्ड-कोडिंग के बिना डिफ़ॉल्ट मान। –

21

आप mouseup और change ईवेंट का उपयोग कर सकते हैं। माउस अप में आपको radio बटन का मान प्राप्त होगा जिसे अन्य रेडियन बटन चुनने से पहले चुना गया है और ईवेंट बदलना radio बटन का नया चयन देगा।

Live Demo

$('input[name=radios]').mouseup(function(){ 
    alert("Before change "+$('input[name=radios]:checked').val()); 
}).change(function(){ 
    alert("After change "+$('input[name=radios]:checked').val()); 
})​; 
+0

ग्रेट उत्तर, +1 के लिए पिछले मान प्राप्त कर सकते हैं। हालांकि रेडियो बटन पर सीधे क्लिक करते समय अजीब तरीकों से प्रतिक्रिया होती है और उपरोक्त विकल्प (हालांकि सीधे डीओएम घटनाओं से निपटता नहीं है) क्लीनर है। –

1

मैं एक ही मुद्दा जब विकल्पों के साथ एक बजट कैलकुलेटर बनाने की कोशिश कर के लिए किया था, मैं यह आ का उपयोग कर हल अंतिम मूल्य रखने के लिए var;

  var before = -1; 
      $('input:checkbox, input:radio').click(function() { 
       // +(str) = number(str) 
       var value = +$(this).val(); 
       if ($(this).is(":checkbox")) { 
        if ($(this).is(":checked")) { 
         total += value; 
        } else { 
         total -= value; 
        } 
       } 
       else { 
        if (before < 0) { 
         total += value; 
         before = value; 
        } else { 
         total -= before; 
         total += value; 
         before = value; 
        } 
       } 
       $("#sub-total").text(total * hourly_rate); 
       if ($(this).is("[data-toggle]")) { 
        $("#" + $(this).attr("data-toggle")).slideToggle("fast"); 
       } 
      }); 
0

बस # आदिल के जवाब पूरा करने के लिए, यदि आप पाठ के साथ रेडियो है, उपयोगकर्ता पाठ क्लिक करता है तो previousRadio अद्यतन प्राप्त करता है। आप उपयोग कर सकते हैं निम्नलिखित:

<label> 
    <input type="radio" name="radioName"> 
    text 
</label> 

और js:

var $previousRadio; 
var $inputs = $('input[name=radioName]'); 
$inputs.parents("label").mouseup(function() { 
    $previousRadio = $inputs.filter(':checked'); 
}); 
$inputs.change(function() { 
    alert($previousRadio.val()); 
}); 
0

एक व्यंजना होगा, लेकिन इस मामले में किसी को इस मुद्दे पर ठोकर "यह एक समय हो गया है":

Adil में मुझे बताया सही दिशा, हालांकि mouseup केवल माउस-ट्रिगर किए गए ईवेंट (डुह) के लिए काम करता है, इसलिए मैंने focus के साथ प्रयास किया और चूंकि change ईवेंट से पहले होता है, यह वाई वें, दोनों, माउस और कीबोर्ड इनपुट (जैसे कि आप टैब और तीर कुंजी का उपयोग करके रेडियो स्थिति बदलते हैं)। तो उपयोगकर्ता बातचीत आप focus का उपयोग करने से पहले पहले से चयनित/जाँच की मद में पहुँच प्राप्त करने और वर्तमान आइटम आप का उपयोग अपने अच्छे पुराने change पाने के लिए:

//html 
    <input type="radio" id="radio-1" name="radios" value="1" /> 
    <input type="radio" id="radio-2" name="radios" value="2" /> 

//js 
    //if currently checked item is radio-1 
    $(input).on('focus', function() { 
     console.log($('[name="radios"]:checked').val()); //outputs 1 
    }); 
    $(input).change(function() { 
     console.log($('[name="radios"]:checked').val()); //outputs 2 
    }); 
संबंधित मुद्दे