2012-08-01 7 views
13

Jelly Bean पाठ इनपुट के लिए HTML के maxlength विशेषता पसंद करने के लिए प्रतीत नहीं होता। यह निश्चित रूप से इनपुट वर्णों की संख्या को प्रतिबंधित करता है लेकिन जिस क्षण आप चरित्र की अनुमत संख्या से परे टाइप करने का प्रयास करते हैं, टेक्स्ट बॉक्स विफल रहता है। अब आप किसी अन्य टेक्स्ट बॉक्स में टाइप नहीं कर पाएंगे और न ही आप उस टेक्स्ट बॉक्स में पहले से ही इनपुट कैरेक्टर को हटा पाएंगे।Jelly Bean WebView पाठ बॉक्स के लिए HTML maxlength विशेषता के साथ अच्छी तरह से काम नहीं कर रहा

यदि आप पहले से ही इसका सामना नहीं कर चुके हैं, तो इसे अपने आप को एक साधारण HTML पर आज़माएं और जांचें। कृपया मुझे बताएं कि क्या आपको इसे हल करने के लिए कोई सुराग है।

+2

पी.एस .: इस एंड्रॉयड के वेबव्यू –

उत्तर

20

मैं भी अब के लिए मेरे एप्लिकेशन

में एक ही समस्या का अनुभव किया है मैं js के साथ संभाला है, जो सभी maxlength इनपुट पाठ और पाठ क्षेत्र से जिम्मेदार बताते हैं और आवश्यक पाठ की तुलना में अधिक inputing से उपयोगकर्ता बंद हो जाता है निकालता है। यहां यह माना जाता है कि सभी इनपुट टेक्स्ट और टेक्स्टरेरा में अद्वितीय आईडी है।

कोड jsfiddle

$(document).ready(function() { 

     var ver = window.navigator.appVersion; 
      ver = ver.toLowerCase(); 

     if (ver.indexOf("android 4.1") >= 0){    

      var idMaxLengthMap = {}; 

      //loop through all input-text and textarea element 
      $.each($(':text, textarea, :password'), function() { 
       var id = $(this).attr('id'), 
        maxlength = $(this).attr('maxlength'); 

       //element should have id and maxlength attribute 
       if ((typeof id !== 'undefined') && (typeof maxlength !== 'undefined')) { 
        idMaxLengthMap[id] = maxlength; 

        //remove maxlength attribute from element 
        $(this).removeAttr('maxlength'); 

        //replace maxlength attribute with onkeypress event 
        $(this).attr('onkeypress','if(this.value.length >= maxlength) return false;'); 
       } 
      }); 

      //bind onchange & onkeyup events 
      //This events prevents user from pasting text with length more then maxlength 
      $(':text, textarea, :password').bind('change keyup', function() { 
       var id = $(this).attr('id'), 
        maxlength = ''; 
       if (typeof id !== 'undefined' && idMaxLengthMap.hasOwnProperty(id)) { 
        maxlength = idMaxLengthMap[id]; 
        if ($(this).val().length > maxlength) { 

         //remove extra text which is more then maxlength 
         $(this).val($(this).val().slice(0, maxlength)); 
        } 
       } 
      }); 
     } 
    });​ 

इस समस्या के लिए बग पहले से ही 35264

+0

मैं उपरोक्त कोड में राहुल के सुझाव को शामिल किया है में होता है। इसके अलावा, अगर आपको लगता है कि इस कोड को केवल चलाना चाहिए जेली बीन के लिए आप नीचे दिए गए अगर ब्लॉक 'में इस कोड डाल सकते हैं चाहते \t वर ver = window.navigator.appVersion; \t ver = ver.toLowerCase(); \t अगर (ver.indexOf ("एंड्रॉयड 4.1")> = 0) \t { \t \t // आवश्यक कोड यहाँ \t} ' –

1

मैंने निम्नलिखित एंड्रॉइड समस्या खोली: 35823। यदि आप इस समस्या का सामना कर रहे हैं तो कृपया इसे तारांकित करें ताकि इसे कुछ ध्यान और हल किया जा सके।

6

पर खोला गया था पर भी उपलब्ध है, तो अपने मामले बहुत सरल है तो अपने html लाइन में एक सरल इसके अलावा भी, की तरह काम कर सकते हैं इसलिए:

​<input type="text" class="abc" onkeypress="if(this.value.length > 9) return false;"/>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
+0

यह सिर्फ एक उदाहरण है, यह सोचते हैं आप एक क्षेत्र में अधिकतम 10 वर्ण की जरूरत है, हो सकता है एक फोन नंबर मेंफ़ील्ड –

+0

यह मोबाइल फोन पर बिल्कुल काम नहीं करता है और न ही आईओएस –

1

यह निश्चित रूप से एक डेवलपर के दुःस्वप्न बग जब तक आप रू एहसास है :) टी कारण और "आह ..." क्षण महसूस करते हैं। FYI: भले ही इस बग के कारण डीओएम में सभी इनपुट फ़ील्ड फ्रीज हो, फिर भी मैं जावास्क्रिप्ट का उपयोग कर इनपुट फ़ील्ड के मानों में हेरफेर और परिवर्तन करने में सक्षम था।

+0

हाँ जेएस के माध्यम से, आप इसे कभी भी कर सकते हैं। यह सिर्फ इतना है कि डोम उपयोगकर्ता से घटनाओं को छूने के लिए सुनना बंद कर देता है। –

2

मेरी एंड्रॉयड 4.1.2 में अब Android मेनिफेस्ट फ़ाइल में WRITE_EXTERNAL_STORAGE के रूप में "अनुमति प्रदान करें।

इनपुट प्रकार संख्या की स्वीकृति के साथ काम कर रहा है 7.

1

इनपुट फ़ील्ड जहां जरूरत के लिए अलग से कुंजी दबाने संभाल एक अलग वर्ग जोड़कर maxlength को प्रतिबंधित करने और उस वर्ग के लिए कुंजी दबाने सुनने के लिए।

एचटीएमएल

<textarea ng-model="model " rows="3" maxlength="100" cols="70" class="custom_txtarea ng-pristine ng-valid charlength" placeholder="Achievements"></textarea> 

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

$(".charlength").keypress(function(event) { 
      if(event.which >= 32 || event.which == 13) { 
      var maxLength = event.currentTarget.maxLength; 
      var length = event.currentTarget.value.length; 
      if(length >= maxLength) {      
       event.preventDefault(); 
      } 
     } 
    }); 
संबंधित मुद्दे