Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I played around for a bit and decided to create a jquery plugin out of it which seems to handle my quesiton:</p> <p><a href="http://jsfiddle.net/8pyF2/9/" rel="nofollow">http://jsfiddle.net/8pyF2/9/</a></p> <p>I did add the ability for it to also work with selects and also added a clear button. Let me know if this should be refactorred.</p> <p><strong>html:</strong></p> <pre><code>&lt;div class="grouped_choice"&gt; &lt;h1&gt;Some Input Group&lt;/h1&gt; &lt;p&gt; &lt;input type="text" rel="group_1" /&gt; &lt;input type="text" rel="group_1" /&gt; &lt;a href="#" class="clear_group" rel="group_1"&gt;clear&lt;/a&gt; &lt;/p&gt;OR &lt;p&gt; &lt;input type="text" rel="group_2" /&gt; &lt;input type="text" rel="group_2" /&gt; &lt;a href="#" class="clear_group" rel="group_2"&gt;clear&lt;/a&gt; &lt;/p&gt;OR &lt;p&gt; &lt;input type="text" rel="group_3" /&gt; &lt;input type="text" rel="group_3" /&gt; &lt;a href="#" class="clear_group" rel="group_3"&gt;clear&lt;/a&gt; &lt;/p&gt; &lt;/div&gt; &lt;div class="grouped_choice"&gt; &lt;h1&gt;Some Other Input Group&lt;/h1&gt; &lt;p&gt; &lt;input type="text" rel="group_1" /&gt; &lt;input type="text" rel="group_1" /&gt; &lt;a href="#" class="clear_group" rel="group_1"&gt;clear&lt;/a&gt; &lt;/p&gt;OR &lt;p&gt; &lt;input type="text" rel="group_2" /&gt; &lt;input type="text" rel="group_2" /&gt; &lt;a href="#" class="clear_group" rel="group_2"&gt;clear&lt;/a&gt; &lt;/p&gt;OR &lt;p&gt; &lt;input type="text" rel="group_3" /&gt; &lt;input type="text" rel="group_3" /&gt; &lt;a href="#" class="clear_group" rel="group_3"&gt;clear&lt;/a&gt; &lt;/p&gt; &lt;/div&gt; </code></pre> <p><strong>Javascript:</strong></p> <pre><code>(function ($) { $.fn.groupedChoice = function () { this.each(function () { var parent = $(this); // handle change parent.on('change', 'input,select', function () { var field, group; field = $(this); group = field.attr('rel'); if (field.val().length !== 0) { parent.find('input[rel!="' + group + '"],select[rel!="' + group + '"]').prop('disabled', true).addClass('disabled'); } else { var empty = true parent.find('input[rel='+group+'],input[rel='+group+']').each( function() { if($(this).val().length !== 0) empty = false }); if(empty) parent.find('input,select').prop('disabled', false).removeClass('disabled'); } }); // handle group clear parent.find('.clear_group').click( function(e) { e.preventDefault(); group = $(this).attr('rel'); disabled = false; parent.find('input[rel='+group+'],select[rel='+group+']').each( function() { if( $(this).prop('disabled') ) disabled = true }) if(!disabled) { parent.find('input[rel='+group+'],select[rel='+group+']').val(''); parent.find('input,select').prop('disabled', false).removeClass('disabled'); } }); }); }; })(jQuery); $('.grouped_choice').groupedChoice(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload