2009-11-18 24 views
29
$("#myinputfield").focus(); 

एक इनपुट फ़ील्ड के साथ पहले से ही सेट मूल्य है पर ऐसा करने से बिना JQuery के साथ इनपुट क्षेत्र फोकस का कारण बनता है वर्तमान मूल्य का चयन किया जाना। टेक्स्ट को चुने बिना मैं फ़ील्ड को कैसे केंद्रित कर सकता हूं?वर्तमान मान पाठ का चयन

+0

क्यों आप ऐसा करना चाहेगा? यदि आप किसी फ़ील्ड में टैब करते हैं तो यह भी चुना जाता है। यह मानक उपयोगकर्ता व्यवहार है। आप देखभाल की अपेक्षा कहां से करते हैं? (पाठ का प्रारंभ? पाठ का अंत?) – Phrogz

+0

@Phrogz यह वैसे ही व्यवहार कर सकता है जैसा टेक्स्टटेस अब करता है (सामग्रियों का चयन तब नहीं किया जाता है जब एक में टैबबिंग हो)। यह ब्राउज़र में समान नहीं है लेकिन जब तक यह लगातार है .. – MSpreij

उत्तर

27

मैंने थोड़ी सी खोज की है और थोड़े से पता चला है कि आपको ध्यान केंद्रित करने के बाद वांछित क्षेत्र में अपना मूल्य फिर से सेट करना चाहिए।

+0

देखें http://stackoverflow.com/questions/13371430/jquery-focus-is-highlighting-all-pre-filled-text – gibberish

+1

यह प्रतीत नहीं होता है क्षेत्र में टैब्ड होने पर क्रोम में काम करें। –

26

इस तरह कुछ ऐसा कहां है जहां आप इसे ध्यान केंद्रित करने के बाद इनपुट फ़ील्ड का मान सेट करते हैं?

$("#myinputfield").focus().val($("#myinputfield").val()); 
3

क्या आपने यह कोशिश की है?

var txt = $("#myinputfield").val(); 
$("#myinputfield").focus(); 
$("#myinputfield").val(txt); 
6

अन्य उत्तरों इनपुट केंद्र के मूल्य को ध्यान में रखकर स्वयं को निर्धारित करने का सुझाव देते हैं। यदि फ़ायरफ़ॉक्स में, कर्सर इनपुट की शुरुआत में प्रकट होता है और आप इसे अंत में चाहते हैं, तो थोड़ा सा संशोधन आवश्यक है। आपको मूल्य को पहले खाली के रूप में सेट करना होगा और फिर इसे पिछले मान पर सेट करना होगा।

var value = $("#myinputfield").val(); 
$("#myinputfield").focus().val('').val(value); 
0
function focusField(id){ 
    var inputField = document.getElementById(id); 
    if (inputField != null && inputField.value.length != 0){ 
     if (inputField.createTextRange){ 
      var FieldRange = inputField.createTextRange(); 
      FieldRange.moveStart('character',inputField.value.length); 
      FieldRange.collapse(); 
      FieldRange.select(); 
     }else if (inputField.selectionStart || inputField.selectionStart == '0') { 
      var elemLen = inputField.value.length; 
      inputField.selectionStart = elemLen; 
      inputField.selectionEnd = elemLen; 
      inputField.focus(); 
     } 
    }else{ 
     inputField.focus(); 
    } 
} 
0
$(document).ready(function() { 
    var $field = $("#formloginusername"), 
     oldVal = $field.val(); 
    $field.focus().val('').val(oldVal); 
}); 

डेमो: http://jsfiddle.net/X7Y8S/

मैं अन्य विषय में ahren के जवाब से कोड & डेमो ले लिया है, मुझे लगता है कि यह उपयोगी है।

0

यह समाधान मेरे लिए बहुत अच्छी तरह से काम करता है:

$("#myinputfield").focus(function (event) { 
    var value = $("#myinputfield").val(); 
    setTimeout(function() { 
    $("#myinputfield").val(value); 
    },10); 
}); 
संबंधित मुद्दे