2012-01-08 11 views
16

मुझे आईफोन सिम्युलेटर में छुपा कीबोर्ड के साथ समस्या है। मेरे एचटीएमएल कोड:एक फोनगैप ऐप में jQueryMobile पेज में कीबोर्ड कैसे छिपाएं?

<form id="my_form"> 
    <input type="search" id="searchBar" /> 
</form> 

jQuery कोड:

$("#my_form").submit(function() { 
    one = $('#searchBar').val(); 
    console.log(one); 
    doSearch(one); 
    return false; 
}); 

सब कुछ काम करता है के रूप में मैं की जरूरत है: मैं प्रपत्र मूल्य मिलता है और कुछ अजाक्स प्रदर्शन कर सकते हैं। लेकिन जब समारोह गलत हो जाता है, तो आईफोन सिम्युलेटर में वर्चुअल कीबोर्ड अभी भी दिखाई देता है। कुंजीपटल कैसे छुपाएं? क्या ऐसा करने का कोई और तरीका है? जब मैं आईफोन पर 'गो' खोजता हूं और दबाता हूं तो मुझे अजाक्स का उपयोग कर सर्वर पर डेटा पास करने की आवश्यकता होती है। खोज परिणाम उसी पृष्ठ में दिखाया जाना चाहिए (पहले से ही किया गया)। उपयोगकर्ता फिर से उसी पृष्ठ में खोज सकता है।

कृपया मेरी मदद करें।

धन्यवाद,

--regeint

उत्तर

1

मुझे मदद करने के लिए Hosh Sadiq और techfoobar धन्यवाद। वास्तव में मैंने निम्नलिखित किया और यह काम किया। यह इस तत्व के ऊपर या नीचे सीएसएस को प्रभावित नहीं करता है।

$('.clr').after('<input type="checkbox" id="focusable" style="height:0; margin-left:-200px; clear: both;" />'); 
$('#focusable').focus(); 

एक बार फिर धन्यवाद। :)

1

कोशिश एक और फ़ोकस करने योग्य तत्व जोड़ (पूर्व: एक <select>) अपने पृष्ठ के लिए (ताकि 0 करने के लिए अपनी ऊंचाई सेट है कि इसकी नहीं दिखाई अभी तक फ़ोकस करने योग्य) के लिए, और शिफ्ट फोकस झूठी लौटने से पहले वह तत्व।

2

jQuery में, यदि आप return false; हैं, तो यह डिफ़ॉल्ट ब्राउज़र व्यवहार को रोक देगा, जो इस मामले में, दोनों फॉर्म को सबमिट करने के साथ-साथ कीबोर्ड को बंद कर रहा है। निम्नलिखित काम करना चाहिए:

<form id="my_form"> 
    <input type="search" id="searchBar" /> 
    <div style="height:0;width:0;"> 
     <input id="focusable" type="checkbox" /> 
    </div> 
</form> 

jQuery:

$("#my_form").submit(function(){ 
    one = $('#searchBar').val(); 
    console.log(one); 
    doSearch(one); 
    $('#focusable').focus(); 
    return false; 
}); 
+0

हाय होश, यह काम नहीं कर रहा है।कीबोर्ड अभी भी दिखाई दे रहा है :( – regeint

+0

टेक्नफ़ोबायर ने जो किया है उसे करने का प्रयास करें, लेकिन चयन के बजाए चेकबॉक्स के साथ (एक चयन शायद खाली सूची का पॉपअप करेगा)। मैंने इसे प्रतिबिंबित करने के लिए अपना उत्तर अपडेट कर दिया है। –

32

इसके बजाय एक और तत्व को फोकस स्विच करने का आप बस इस तरह अपने इनपुट को धुंधला कर सकते हैं:

$('#searchBar').blur(); 

यह वर्चुअल कीबोर्ड छुपा देगा।

+0

मुझे प्यार है आसान जवाब - सरल और प्रभावी, धन्यवाद! – zeroasterisk

1

मैं regeint समाधान थे, लेकिन संशोधित थोड़ा यह काम नहीं करता क्योंकि मैं phonegap बताया Cordova.plist में उपयोगकर्ता को बताए बिना कुंजीपटल दिखा अनुमति देने के लिए मैं NO

function hideTheKeyBoard() { 
    $($.mobile.pageContainer).after('<input type="checkbox" id="focusable" style="height:0;margin-left:-200px;" />'); 
    $('#focusable').focus();// maybe .blur() would work too. 
    $('#focusable').remove(); 
} 
17

को KeyboardDisplayRequiresUserAction सेट here

से

यह सुंदर आत्म-व्याख्यात्मक है। दूसरी पंक्ति सभी इनपुट फ़ील्ड को डी-फ़ोकस करेगी, और यह jQuery पर निर्भर करती है। मैंने पाया कि एकल केंद्रित टेक्स्टफील्ड पर कॉलिंग ब्लर() हमेशा काम नहीं करता था। इन लाइनों में से किसी एक को स्वतंत्र रूप से काम करना चाहिए, लेकिन उनमें से दोनों को एक साथ नहीं रोका जा सकता है!

var hideKeyboard = function() { 
    document.activeElement.blur(); 
    $("input").blur(); 
}; 
संबंधित मुद्दे