2012-02-02 11 views
6

के साथ रेडियो बटन सूची मैं लेबल के साथ रेडियो बटन की एक सूची बनाने की कोशिश कर रहा हूं ताकि आप रेडियो आइटम की जांच के लिए लेबल पर क्लिक कर सकें। क्रोम में मैंने जो काम किया है, लेकिन आईई 7 नहीं। एचटीएमएल जो थूक जाता है ऐसा लगता है कि यह सही है, लेकिन जब मैं लेबल पर क्लिक करता हूं, तो इसी रेडियो बटन का चयन नहीं होता है।नॉकआउट.जेएस

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

function ReuqestType(id, name, billable) { 
    this.id = id; 
    this.name = name; 
    this.billable = billable; 
} 

function RequestViewModel() { 
    var self = this; 

    self.availableRequestTypes = [ 
     new ReuqestType(1, "Travel", true), 
     new ReuqestType(2, "Bill Only", false), 
     new ReuqestType(3, "Both", true) 
    ]; 

    self.selectedRequestType = ko.observable(); 
} 

एचटीएमएल

Request Type 
<br /> 
<!-- ko foreach: availableRequestTypes --> 
<input type="radio" name="requestType" data-bind="value:id, attr: {'id': 'rt'+ id}" /> 
<label data-bind="text: name, attr:{'for':'rt'+id}"> 
</label> 
<!-- /ko --> 

यह करने के लिए पसंदीदा तरीका क्या है?

उत्तर

1

यह नॉकआउट (2.1.0) के नवीनतम संस्करण के रूप में सही ढंग से काम कर रहा है।

0

मैं knockout.js से अपरिचित हूं, लेकिन आप आमतौर पर इनपुट बॉक्स के चारों ओर लेबल लपेटकर लेबल के इनपुट को बाध्य कर सकते हैं।

http://jsfiddle.net/QD2qC/

+1

आपको लेबल के साथ इनपुट लपेटने पर विचार नहीं करना चाहिए। यह सही मार्कअप नहीं है और आप ब्राउज़र के बीच असंगत व्यवहार प्राप्त कर सकते हैं। ऐसा करने का यह सही तरीका है क्योंकि ओप लेबल – soniiic

+3

पर 'फॉर एट्रिब्यूट' का उपयोग कर कर रहा है यह सही मार्कअप है, एचटीएमएल 4 चश्मा देखें: http://www.w3.org/TR/html4/interact/forms .html # edef-LABEL – Doug

-3

ऐसा लगता है कि अपने HTML की तरह ठीक है। यह आईई 7 का एक क्विर्क हो सकता है जो गतिशील रूप से उत्पन्न किए गए लेबल के क्लिक को स्वीकार करने में सक्षम नहीं है।

आप एक उचित उत्तर नहीं मिलता है, तो आप हमेशा this workaround इस्तेमाल कर सकते हैं:

$('label').on('click', function() { 
    var labelId = $(this).attr('for'); 
    $('#' + labelId).trigger('click'); 
}); 

मैं on() बजाय click() का उपयोग कर इन लेबलों के लिए गतिशील रूप से उत्पन्न किया जा रहा खाते में से थोड़ा बदल गया है।

+1

मैंने टैग या प्रश्न में कहीं भी jQuery को सूचीबद्ध नहीं किया है। यह Knockout.js ढांचे के साथ एक समस्या/प्रश्न है। यह क्रॉस-ब्राउजर होने का दावा करता है और ब्राउज़र को व्यवहार करने के लिए मुझे यह जानने की ज़रूरत है कि क्या यह सच है या नहीं, बहुत सारे जेक्यू हैक के बिना। – arb

+0

मेरे लिए, यह knockout.js ढांचे के साथ कोई समस्या नहीं है। यदि यह सही एचटीएमएल आउटपुट करता है तो समस्या कहीं और है, इसलिए मैंने सुझाव दिया कि यह आईई 7 विशिष्ट क्विर्क हो सकता है। – soniiic

+0

मुझे एक संभावित समाधान मिला है: http://stackoverflow.com/questions/1252690/ie-hidden-radio-button-not-checked-when-the-corresponding-label-is-clicked यह है क्योंकि आपके इनपुट फ़ील्ड छुपा रहे हैं? – soniiic