2009-07-22 14 views
40

ब्राउज़ बटन का नाम बदलने के लिए "फ़ाइल" चुनें? उदा .:इनपुट प्रकार = फ़ाइल के HTML "ब्राउज़ करें" बटन का नाम कैसे बदलें?

<input type=file name=browse > 
+1

संभावित इनपुट डुप्लिकेट [<इनपुट प्रकार = "फ़ाइल के बटन टेक्स्ट को कैसे बदलें <\? ](http://stackoverflow.com/questions/1944267/how-to-change-the-button- टेक्स्ट-ऑफ-इनपुट-टाइप-फाइल) – Alex

उत्तर

23

बटन "ब्राउज़ बटन" नहीं कहा जाता है - कि बस नाम आपके ब्राउज़र देता है इसके लिए। ब्राउज़र अपलोड फ़ाइल नियंत्रण को लागू करने के लिए स्वतंत्र हैं हालांकि वे पसंद करते हैं। सफारी में, उदाहरण के लिए, इसे "फ़ाइल चुनें" कहा जाता है और यह जो कुछ भी आप उपयोग कर रहे हैं उसके विपरीत पक्ष पर है।

आप the technique outlined on QuirksMode का उपयोग कर अपलोड नियंत्रण के लिए एक कस्टम रूप लागू कर सकते हैं, लेकिन यह केवल बटन के टेक्स्ट को बदलने से परे है।

2

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

हालांकि कामकाज हैं। सबसे अच्छा मेरी राय this one में है (परिणाम here है)।

0

नहीं, आप फ़ाइल अपलोड इनपुट का टेक्स्ट नहीं बदल सकते हैं। लेकिन बटन पर एक छवि ओवरले करने के लिए कुछ चाल हैं।

1

AFAIK आप बटन टेक्स्ट नहीं बदल सकते हैं, यह ब्राउज़र में हार्ड कोड किया गया है।

लेकिन वहाँ एक फार्म पर विभिन्न पाठ/छवि के साथ एक बटन रखने के लिए कई संभावित हल कर रहे हैं:

link

0

आप अपलोडिफ़ी का भी उपयोग कर सकते हैं, जो एक महान jQuery अपलोड प्लगइन है, यह आपको कई फाइलें अपलोड करने देता है, और फ़ाइल फ़ील्ड को आसानी से स्टाइल भी करता है। http://www.uploadify.com

5

JavaScript का एक बिट यह ध्यान रखना होगा:

<script language="JavaScript" type="text/javascript"> 
function HandleBrowseClick() 
{ 
    var fileinput = document.getElementById("browse"); 
    fileinput.click(); 
    var textinput = document.getElementById("filename"); 
    textinput.value = fileinput.value; 
} 
</script> 

<input type="file" id="browse" name="fileupload" style="display: none"/> 
<input type="text" id="filename" readonly="true"/> 
<input type="button" value="Click to select file" id="fakeBrowse" onclick="HandleBrowseClick();"/> 

नहीं सबसे अच्छी लग रही समाधान है, लेकिन यह काम करता है।

+0

यदि जेएस उपलब्ध नहीं है तो यह पूरी तरह से अनुपयोगी होगा। (एचटीएमएल भी अमान्य है)। – Quentin

+0

@ डेविड डोरवाड: स्पष्ट इंगित करने के लिए धन्यवाद (जेएस उपलब्ध नहीं है जब जेएस काम नहीं करता है)। असली दुनिया का मामला यह होगा कि यह बेहद दुर्लभ होगा। इसके अलावा, मैंने किसी के लिए अंधेरे से प्रतिलिपि बनाने और इसे पेस्ट करने का इरादा नहीं किया था और इसे सीधे उपयोग करने का इरादा नहीं था, यह लक्ष्य के रूप में लक्ष्य प्राप्त करने का एक संभावित तरीका दिखाने के लिए एक सूचक के रूप में था। लेकिन हे, मुझे फिर से पोस्ट करने से रोकने के लिए धन्यवाद। – korona

+0

मुद्दा यह है कि जेएस उपलब्ध नहीं है तो एचटीएमएल काम नहीं करता है। एक निर्णायक लिखित समाधान गर्व से गिरावट आएगा और उस स्थिति पर वापस नहीं आ जाएगा जहां एक बटन था जो कुछ भी नहीं करता था। – Quentin

28
<script language="JavaScript" type="text/javascript"> 
function HandleBrowseClick() 
{ 
    var fileinput = document.getElementById("browse"); 
    fileinput.click(); 
} 
function Handlechange() 
{ 
var fileinput = document.getElementById("browse"); 
var textinput = document.getElementById("filename"); 
textinput.value = fileinput.value; 
} 
</script> 

<input type="file" id="browse" name="fileupload" style="display: none" onChange="Handlechange();"/> 
<input type="text" id="filename" readonly="true"/> 
<input type="button" value="Click to select file" id="fakeBrowse" onclick="HandleBrowseClick();"/> 

http://jsfiddle.net/J8ekg/

+1

मैंने इस दृष्टिकोण का उपयोग किया और वास्तव में इसके साथ सहज महसूस किया। लेकिन बदलने के लिए एक मुख्य बात है: यदि आप प्रदर्शन लागू करते हैं: उस इनपुट में कोई भी नहीं, क्लिक काम नहीं करता है, तो अस्पष्टता के साथ बेहतर जाएं: 0; धन्यवाद!!! – cbarg

+0

ओपेसिटी पुराने ब्राउज़र द्वारा समर्थित नहीं है, इसलिए इसके साथ सावधान रहें। –

+0

अब मुझे आश्चर्य है कि अगर मैं एक और चर भेजना चाहता हूं तो क्या होगा, चलिए इसे 'group_id' कहते हैं। मुझे इसे कैसे भेजना चाहिए? एचटीएमएल '<इनपुट प्रकार =" छुपा "वर्ग =" छुपाएं "id =" group_id "name =" group_id "value =" 2 "/>' लेकिन स्क्रिप्ट में? – cbarg

3

आप एक सरल सीएसएस/JQ वैकल्पिक हल के साथ यह कर सकते हैं: एक नकली बटन जो ब्राउज़ बटन कि छिपा हुआ है चलाता है बनाएँ।

एचटीएमएल

<input type="file"/> 
<button>Open</button> 

सीएसएस

input { display: none } 

jQuery

$('button').click(function(e) { 
    e.preventDefault(); // prevents submitting 
    $('input').trigger('click'); 
}); 

demo

+1

यहां सुनिश्चित करें कि बटन 'type = "बटन है" या यह फ़ॉर्म सबमिट करेगा। – Mihai

+0

जावास्क्रिप्ट पहले से ही इसे रोकता है। – Thielicious

5
  1. लपेटें <label> टैग के साथ;
  2. लेबल के अंदर एक टैग (आपको जिस पाठ की आवश्यकता है) जोड़ें, जैसे <span> या <a>;
  3. यह टैग एक बटन की तरह दिखें;
  4. input[type="file"]display: none के माध्यम से अदृश्य बनाएं।
संबंधित मुद्दे