2012-01-25 17 views
10

मेरे पास category नामक एक चर है जिसे चयनित रेडियो बटन के अनुसार अपना मान बदलना चाहिए। समस्या यह है कि मुझे रेडियो बटन या किसी अन्य के क्लिक पर यह नहीं मिलता है, तो मूल्य तुरंत बदल जाएगा।रेडियो बटन से JQuery परिवर्तन मूल्य

<form> 
<input type="radio" name="category" value="doctor" /> Doctor 
<input type="radio" name="category" value="police" checked /> Policia 
</form> 

var category = $('[name="category"]:checked').val(); 

मैं जब आप रेडियो बटन पर क्लिक करें आप स्वचालित रूप से चर category का मूल्य बदलने की जरूरत:

इस कोड को मेरे पास है।

var category; 

    $('radio[name="category"]').click(function(){ 
     category=this.value; 
    }); 

उत्तर

13

आप श्रेणी का मूल्य हर बार एक उपयोगकर्ता चयनित रेडियो बटन में परिवर्तन बदलने की जरूरत है। इसलिए जब उपयोगकर्ता रेडियो पर क्लिक करता है तो आपको ट्रिगर करने के लिए एक ईवेंट की आवश्यकता होगी। आप देख सकते हैं FIDDLE

var category = null; 
$("input[name='category']").click(function() { 
    category = this.value; 
}); 
1

मैं आप बस कुछ इस तरह की जरूरत है। अन्यथा आप या click ईवेंट का उपयोग checked रेडियो बटन मान category चर सेट करने के लिए कर सकते हैं।

+0

मुझे लगता है कि "परिवर्तन" घटना का उपयोग करना बेहतर है, यह "क्लिक" से अधिक सामान्य उद्देश्य है। – T30

1
इसके बजाय भी आप की जाँच रेडियो बटन का मूल्य चाहते category चर उपयोग $('[name="category"]:checked').val() का उपयोग करने का

:

+0

यह 'परिवर्तन' घटना को लागू करने के बजाय प्रत्यक्ष दृष्टिकोण है। – Peter

34

change घटना के लिए एक ईवेंट हैंडलर संलग्न करें:

$(':radio[name="category"]').change(function() { 
    var category = $(this).filter(':checked').val(); 
}); 
+3

आप इस परिवर्तन की तरह 'परिवर्तन' ईवेंट का उपयोग करना चाहते हैं, 'क्लिक' नहीं जो कुछ अन्य सलाह दे रहे हैं। 'परिवर्तन' का उपयोग करना सुनिश्चित करता है कि आप अपना मूल्य अपडेट करें, भले ही उपयोगकर्ता नेविगेट किया हो और अपने कीबोर्ड का उपयोग करके रेडियो बटन का चयन किया हो। – idrumgood

+0

प्रश्न स्पष्ट रूप से "ऑनक्लिक" था, परिवर्तन पर नहीं – albanx

+2

@albanx: 'क्लिक' केवल तभी आग लगेगा जब बटन क्लिक किया गया था (भले ही यह अक्षम हो)। मूल्य बदलते समय 'बदलें' आग (विधि के बावजूद, यह कीबोर्ड या माउस हो), जो अक्षम होने पर नहीं हो सकता है। – Blender

0

आदेश में एक रेडियो बटन के लिए परिवर्तन घटना पर कब्जा करने में .change() का उपयोग करें।

1
var category; 
    $(':radio[name="category"]').change(function() { 
     category=this.value; 
    }); 

और यह jsfiddle.net डेमो है। अब भी वही

<form> 
    Option 1<input type="radio" name="opt" id="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" id="radio" value="Option 2"> 
</form> 

और अपने कोड और:

1

आप एक से अधिक तत्व के लिए एक ही आईडी नहीं देना चाहिए, आप वर्ग के बजाय इस तरह का उपयोग करना चाहिए:

<form> 
    Option 1<input type="radio" name="opt" class="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" class="radio" value="Option 2"> 
</form> 
बजाय

यह ठीक काम करना चाहिए :)

संबंधित मुद्दे