У меня есть форма с полем выбора.В зависимости от выбора должно появиться необязательное второе поле (различное для каждого выбора) для сбора дополнительной информации.У меня был скрипт, который я написал в jQuery, чтобы сделать это, и я быстро преобразовал его в плагин (с намерением добавить больше моего обычно используемого кода, связанного с формой, к плагину позже - obv с изменениями, которые будут следовать в этом отношении).
В любом случае, проблема в том, что этот код прекрасно работает в IE7, Firefox, Chrome, Opera и т. Д. Но это постоянно приводит к полной остановке установки IE8 на нескольких разных компьютерах.Это никогда не размораживается и никогда не дает ошибку.Я озадачен тем, почему это может случиться, или как устранить неполадки, учитывая отсутствие какой-либо информации для отладки.
HTML обычно выглядит так (отрывок).
<!-- Controls Below -->
<li class="group-1 has-dependents">
<label for="selSource">How did you hear about us?</label>
<select id="selSource" name="selSource">
<option value="0">Select One</option>
<option class="group-referral" value="1">Referral</option>
<option class="group-conference" value="4">Conference</option>
<option class="group-other" value="7">Other</option>
</select>
</li>
<!-- Controlled Above -->
<li id="itemSource" class="group-1 dependent">
<!-- Opt 1 -->
<label for="selSourceReferral" class="group-referral">Who gave the referral?</label>
<select name="selSourceReferral" id="selSourceReferral" class="group-referral" disabled="disabled">
<option value="0">Select One</option>
<option value="101">....</option>
<option value="102">....</option>
<option value="103">....</option>
<option value="999">....</option>
</select>
<!-- Opt 2 -->
<label for="selSourceConference" class="group-conference">Which conference?</label>
<select name="selSourceConference" id="selSourceConference" class="group-conference" disabled="disabled">
<option value="0">Select One</option>
<option value="101">....</option>
<option value="102">....</option>
<option value="103">....</option>
<option value="999">....</option>
</select>
<!-- Opt 3 -->
<label for="txtSourceOther" class="group-other">Please Specify</label>
<input type="text" name="txtSourceOther" id="Text1" class="group-other" disabled="disabled" />
<input type="text" name="txtSourceSubOther" id="Text2" class="group-other" disabled="disabled" />
</li>
Код плагина выглядит следующим образом:
(function($){
/* Show associated fields based on current selection */
function show_dependents(_this, _event){
var current = $('select option[value=' + $(_this).val() + ']').attr("class");
if(current.length > 0){
var temp = $(_this).closest('label, li, div, fieldset').attr("class").split(' ');
for(var i = 0; i < temp.length; i++){
if(temp[i].search("group-") >= 0){
temp = "." + temp[i] + "." + "dependent";
$(temp).find('label, input, select, li, div, fieldset').not('.' + current).fadeOut(function(){
$(temp).find('label, input, select, li, div, fieldset').not('.' + current).hide();
});
$(temp).find('.' + current).removeAttr('disabled').fadeIn();
}
}
}
}
$.fn.rlmforms = function(options){
return this.each(function(){
$(this).bind('change.current',
function(e){
show_dependents(this, e);
}
);
$(this).trigger('change.current');
}); // this.each()
} // $.fn.rlmforms = function(options)
})(jQuery);
Он называется:
$('#selSource').rlmforms();
Есть идеи?Обратите внимание, что он не останавливается при загрузке страницы, а останавливается при щелчке по полю родительского выбора.Параметры раскрываются, и один из них можно щелкнуть и выделить.В этот момент браузер полностью зависает и никогда не замораживается.Раскрывающийся список даже не возвращается, но остается выделенным, а тот, который был нажат, выделен.