2013-04-30 5 views
6

मेरी HTML क्लिक करने पर एक HTML पाठ इनपुट के लिए गलत पर केवल पढ़ने के लिए गुण सेट:एक लंगर टैग

<div class="profileForm"> 
    <fieldset> 
    <label>Name<input type="text" id="name" name="name" runat="server" readonly=""/></label> 
    <label>Email<input type="email" id="email" name="email" runat="server" readonly=""/></label> 
    <label>Date Of Birth<input type="date" id="dob" name="dob" runat="server" readonly=""/></label> 
    <label>Address<input type="text" id="address" name="address" runat="server" readonly=""/></label> 
    <label>City<input type="text" id="city" name="city" runat="server" readonly=""/></label> 
    <label>State<input type="text" id="state" name="state" runat="server" readonly=""/></label> 
    <label>Country<input type="text" id="country" name="country" runat="server" readonly=""/></label> 
    <label>Access Level<input type="text" id="accessLevel" name="accessLevel" runat="server" readonly=""/></label> 
    </fieldset> 
</div> 
<div class="profileEdit"> 
    <fieldset> 
     <label><a href="#" id="Aname">edit</a></label> 
     <label><a href="#" id="Aemail">edit</a></label> 
     <label><a href="#" id="Adob">edit</a></label> 
     <label><a href="#" id="Aaddress">edit</a></label> 
     <label><a href="#" id="Acity">edit</a></label> 
     <label><a href="#" id="Astate">edit</a></label> 
     <label><a href="#" id="Acountry">edit</a></label> 
    </fieldset> 
</div> 

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

<script src="Scripts/jquery-1.7.1.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     console.log("document ready") 
     $("profileEdit label a").click(
     function (e) { 
      if (this.attr("id") == "Aname") { 
       $("#name").attr("readonly", false); 
      } 
     }); 
    }); 
</script> 

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

<script type="text/javascript"> 
    $(document).ready(function() { 
     console.log("document ready") 
     $('#Aname').live('click', function() { 
      $("#name").attr("readonly", false); 
     }); 
    }); 
</script> 

मैं क्या कोशिश कर रहा हूँ करने के लिए संबंधित एंकर फ़ील्ड के क्लिक पर संबंधित इनपुट टेक्स्ट फ़ील्ड के केवल पढ़ने योग्य विशेषता सेट है। मेरी जावास्क्रिप्ट स्क्रिप्ट में से कोई भी काम नहीं करता है।

समाधान: @KaraokeStu के संयोजन के बाद, @bipin उत्तर देता मैं asp.net का उपयोग कर रहा हूँ 4,5

$(document).ready(function() { 
     console.log("document ready") 
     $('.profileEdit label a').live('click', function() { 
      alert("ctl00_ContentPlaceHolder1_" + this.id.substring(1, this.id.length)); 
      $("#" + "ctl00_ContentPlaceHolder1_" + this.id.substring(1, this.id.length)).prop('readonly', false); 
      console.log($("#" + "ctl00_ContentPlaceHolder1_" + this.id.substring(1, this.id.length)).attr('readonly')) 
      $("#" + "ctl00_ContentPlaceHolder1_" + this.id.substring(1, this.id.length)).focus(); 
      alert("done"); 
     }); 

    }); 
+0

कृपया अपने अनुरोध को स्पष्ट करें। प्रश्न शीर्षक 'सत्य पर सेट' पढ़ता है जबकि आपके प्रश्न की निचली पंक्ति 'गलत पर सेट' पढ़ती है। –

उत्तर

19

परिवर्तन केवल पढ़ने योग्य एक element..use prop()

$("#name").prop('readonly', false); 

link की Ty प्रोप() और attr()

+0

यह काम किया। धन्यवाद! – thunderbird

+0

आपका स्वागत है ... खुशी हुई यह मदद की ... खुश कोडिंग – bipen

+0

#name संपत्ति का नाम या आईडी है? – Cullub

7

readonly विशेषता बूलियन नहीं है के बारे में अधिक पढ़ने के लिए। आप इसे true या false पर सेट नहीं कर सकते हैं, आप इसे readonly पर सेट कर सकते हैं या इसे बिल्कुल सेट नहीं कर सकते हैं (readonly="" गलत है, आप मान को छोड़ सकते हैं (readonly) या सही मान निर्दिष्ट करें (readonly="readonly"))।

आप डोम में एक तत्व की केवल पढ़ने के लिए स्थिति बदलने के लिए चाहते हैं, तो true या false को readonlyसंपत्ति निर्धारित किया है। अकेले विशेषता छोड़ दो।

$("#name").prop("readonly", false); 
0

स्थापित करने के लिए readonly गलत पर, आप इनपुट क्षेत्र से विशेषता को दूर पूरा करने की आवश्यकता आदेश में:

$("#name").removeAttr("readonly"); 
+1

और डाउनवोट का कारण है? .. –

+0

हां 'attr()' पर 'prop()' क्यों पसंद किया जाना चाहिए? वास्तव में – thunderbird

0
$('div.profileEdit a').click(function() { 
    // extract corresponding label id 
    var labelId = $(this).attr('id').split('A')[1]; 
    // make corresponding label readonly 
    $('input#'+labelId).attr('readonly','readonly'); 
}); 
0

आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

<script> 
$(document).ready(function() { 
    $(".profileEdit label a").each(function (e) { 
     $(this).click(function (elem) { 
      $("#" + this.id.substring(1,this.id.length)).attr("readonly", false); 
     }); 
    });  
}); 
</script> 

जैसा कि यहां प्रदर्शित किया गया है: http://jsfiddle.net/uDCgE/

+0

अच्छा विचार। हालांकि आपका कोड क्लिक के लिए इंतजार नहीं करता था। आपको 'प्रत्येक (फ़ंक्शन (ई) {' को हटाने की आवश्यकता हो सकती है, क्योंकि मैं एएसपीनेट का उपयोग कर रहा हूं, इसलिए मुझे आईडी की शुरुआत में "ctl00_ContentPlaceHolder1_" स्ट्रिंग जोड़ना था क्योंकि क्लाइंट आईडीड जावास्क्रिप्ट स्ट्रिंग पर काम नहीं करेगा। – thunderbird

+0

जब आप क्लाइंट-साइड और सर्वर-साइड कोड को मिश्रित करते हैं, तो यह सभी मजेदार और गेम है, eh? – KaraokeStu

+0

यह वही है जो मैं आपके और @bipen answer.asp.net को संयोजित करने के बाद आया था, सभी रनैट = "सर्वर" नियंत्रणों की आईडी को बदलता है जो कि थोड़े बेकार है। – thunderbird

3

आप या तो इस कार्य करें:

$(selector).attr('readonly', 'readonly'); 
$(selector).removeAttr('readonly'); 

या इस:

$(selector).prop('readonly', true); 
$(selector).prop('readonly', false); 

कभी दो मिश्रण।

याद रखना मुश्किल नहीं है। बस .attr() का उपयोग करते समय याद रखें, आप विशेषता मानों से निपट रहे हैं। .prop() का उपयोग करते समय, आप DOM गुणों से निपट रहे हैं।

-1

सेट तत्व संपत्ति readonly="readonly"

1

आप jQuery के बिना यह कर सकते हैं:

सेट readOnly:

document.getElementById("name").readOnly = true; 

और सेट नहीं:

document.getElementById("name").readOnly = false; 

शुद्ध Vanilla JS में सब कुछ।

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