2010-11-14 12 views
6

मैंने Google के उत्तर के लिए खोज की है और मुझे नाडा मिला है, इसलिए एक पृष्ठ के लिंक को भी दिखाया गया है कि निम्नलिखित कैसे करें, इसकी सराहना की जाएगी।प्रपत्र में चयनित छवि को हाइलाइट करें - Jquery के साथ?

असल में मैं कुछ भी नहीं के साथ एक रूप है, लेकिन छवियों

<form> 
<input type="image" src="image.jpg" value="image_value"> 
<input type="image" src="image2.jpg" value="image_value2"> 
</form> 

मैं जा किसी तरह से छवि उपयोगकर्ता का चयन किया है उजागर करने के लिए सक्षम होने के लिए चाहते हैं। जब भी छवि 1 पर क्लिक करता है तो छवि 1 के आस-पास एक रूपरेखा भी सही होगी।

मैं पहले से ही इस परियोजना पर Jquery का उपयोग कर रहा हूं, इसलिए यदि कोई jquery समाधान है तो यह सबसे आसान होगा।

उत्तर

13

एक accessible दृष्टिकोण शैली रेडियो बटन लेबल के लिए होगा एक छवि की तरह व्यवहार करने के लिए का चयन करें:

<form action="#" method="post"> 
    <input type="radio" class="radio" name="example" id="ex1" value="ex1" checked /> 
    <label for="ex1" class="label">Example 1</label> 
    <input type="radio" class="radio" name="example" id="ex2" value="ex2" /> 
    <label for="ex2" class="label">Example 2</label> 
</form> 

और फिर सीएसएस।

.radio { 
    opacity: 0; 
    position: absolute; 
} 
.label { 
    background: url(http://i.imgur.com/mW6xr2I.png); 
    text-indent: -999em; 
    border: 10px solid white; 
    width: 126px; 
    height: 126px; 
    display: block; 
    float: left; 
    margin: 10px; 
} 
input[type="radio"]:checked + label { 
    border: 10px solid orange; 
} 

यहाँ कार्रवाई में एक उदाहरण है:: आप देख सकते हैं, रेडियो खुद को 0 के एक अस्पष्टता के साथ छुपा रहे हैं http://jsfiddle.net/RH98R/

यह jQuery (या यहां तक ​​कि जावास्क्रिप्ट पर निर्भरता नहीं होने के अतिरिक्त लाभ है उस बात के लिए)!

+2

वर्तमान में स्वीकृत उत्तर वाले व्यक्ति के रूप में (जिसे मैंने 5 साल पहले लिखा था!), मैं मानता हूं कि यह एक बेहतर समाधान है, और इसे स्वीकार किया जाना चाहिए जवाब। –

+1

चूंकि मेरे पास मेरे उत्तर की स्वीकार्यता पर कोई नियंत्रण नहीं है, इसलिए मैंने अपना जवाब एक बड़े बोल्ड नोट के साथ अपडेट किया है जो आपको इंगित करता है। –

+0

(मैंने अभी तक यह जवाब भी नहीं देखा है) –

0

निम्नलिखित जब क्लिक हर छवि इनपुट 1px का बॉर्डर और 10px गद्दी दे देंगे, लेकिन आदर्श रूप में आप उन्हें उनकी तरह से लक्षित करने के लिए एक वर्ग देना चाहिए: $(".imgs2higlight").bind()

$(document).ready(function() { 
      $("input[type='image']").bind('click',function(e) { 
e.preventDefault(); 
      $(this).css({padding : '10px', border: "1px solid blue"}); 
      }) 
      }) 
0

तरह निम्नलिखित काम करना चाहिए, आप स्टाइल सीएसएस कक्षाएं बना सकते हैं और स्टाइल को अधिक आसानी से बदल सकते हैं।

$("input[type='image']") 
    .focus(function() { $(this).css("border","solid 1px #f00"); }) 
    .blur(function() { $(this).css("border","0"); }); 
0

तरह

सीएसएस कुछ:

.selected { border: 1px solid black; } 

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

$(function() { 
    $("input[type=image]").click(function(){ $(this).addClass('selected'); }); 
}); 
7

अद्यतन: कृपया bryanbraun's answer देखते हैं। उसका बहुत बेहतर है।


HTML में, <input type="image"> सिर्फ एक अपने चेहरे के रूप में एक छवि के साथ सबमिट बटन है। मुझे नहीं लगता कि आप यही चाहते हैं। आप शायद वास्तविक छवियों की एक सूची चाहते हैं, जो क्लिक किए जाने पर, "डेटा-वैल्यू" विशेषता के अनुसार एक छिपी हुई फॉर्म मान सेट करें। तो अपने HTML कुछ इस तरह दिखना चाहिए:

$('#select-form img').click(function() { 
    // Set the form value 
    $('#image-value').val($(this).attr('data-value')); 

    // Unhighlight all the images 
    $('#select-form img').removeClass('highlighted'); 

    // Highlight the newly selected image 
    $(this).addClass('highlighted'); 
}); 

अंत में, के लिए कुछ शैलियों सेट:

<form id="select-form"> 
    <img src="image.jpg" data-value="image_value"> 
    <img src="image2.jpg" data-value="image_value2"> 
    <input type="hidden" id="image-value" name="selected_image" value=""> 
</form> 

फिर अपने जावास्क्रिप्ट में, आप दोनों की छवि को उजागर करना और छिपा मूल्य निर्धारित करते हैं, इस तरह चाहते हैं अपने सीएसएस फ़ाइल में उजागर वर्ग:

img.highlighted { 
    border: 2px solid blue; 
} 
+0

बहुत बहुत धन्यवाद, मुझे डेटा-मूल्य के बारे में पता नहीं था! – Sean

+1

'डेटा-वैल्यू' विशेष रूप से कुछ भी नहीं है, यह केवल एक कस्टम विशेषता है। सम्मेलन द्वारा (एचटीएमएल 5 में), कस्टम गुण 'डेटा' के साथ शुरू होते हैं लेकिन शेष कुछ भी हो सकता है। मैंने 'डेटा-वैल्यू 'चुना है, लेकिन' डेटा-नाम 'या' डेटा-जो भी 'ठीक है। अधिक जानकारी के लिए http://ejohn.org/blog/html-5-data-attributes/ देखें। –

+0

स्पष्ट रूप से एचटीएमएल 5 में जोड़ा गया, लिंक के लिए धन्यवाद! मैं आपके जवाब को उखाड़ फेंक दूंगा लेकिन मेरे पास अभी तक पर्याप्त प्रतिनिधि नहीं है! – Sean

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