2016-03-17 4 views
0

У меня есть скрытые DIVS, которые отображают элементы формы, зависящие от того, какой щелчок переключателя. Я вижу много способов сделать это, и я реализовал один из них, и он работает. Проблема в том, что кто-то меняет свое мнение и нажимает на одну радиокнопку, а затем на другую. Все, что было заполнено в DIV, связанное с их первой нажатой кнопкой, теперь скрыто, но значение все еще присутствует и отправляется с формой. Мне нужен способ удалить или удалить значения элемента формы, которые они изначально заполняли, если кто-то заканчивает нажатием другой кнопки.Удалить значения для скрытых DIVs

Я попытался добавить эту строку в свой рабочий код, но, похоже, ничего:

$("#dvCanDentalDate, #dvCanDentalDep, #dvDHMO").val('') 

Полный блок сценария. За исключением строки кода выше, которую я добавил в 2-х местах, остальное работает просто отлично.

$('input[name=dental]').click(function() { 
    if (this.id == "dental1") { 
     $("#dvChooseDental").show('slow'); 
     $("#dvDentalWaive, #dvCanDentalDate, #dvCanDentalDep, #dvDHMO").hide('slow'); 
    } else if (this.id == "dental2") { 
     $("#dvDentalWaive").show('slow'); 
     $("#dvChooseDental, #dvCanDentalDate, #dvCanDentalDep, #dvDHMO").hide('slow'); 
     $("#dvCanDentalDate, #dvCanDentalDep, #dvDHMO").val('') 
    } else if (this.id == "dental3") { 
     $("#dvDentalWaive").show('slow'); 
     $("#dvChooseDental, #dvCanDentalDate, #dvCanDentalDep, #dvDHMO").hide('slow'); 
     $("#dvCanDentalDate, #dvCanDentalDep, #dvDHMO").val('') 
    } else if (this.id == "dental4") { 
     $("#dvCanDentalDate, #dvDentalWaive").show('slow'); 
     $("#dvChooseDental, #dvCanDentalDep, #dvDHMO").hide('slow'); 
    } else if (this.id == "dental5") { 
     $("#dvCanDentalDate, #dvCanDentalDep, #dvDentalWaive").show('slow'); 
     $("#dvChooseDental, #dvDHMO").hide('slow');  
    } else { 
     $("#dvChooseDental, #dvCanDentalDate, #dvCanDentalDep, #dvDentalWaive, #dvDHMO").hide('slow'); 
    } 
}) 

ответ

1

Использование .html('') опустошить DIVS

$("#dvCanDentalDate, #dvCanDentalDep, #dvDHMO").html('')

или

$("#dvCanDentalDate, #dvCanDentalDep, #dvDHMO").empty()

+0

Чтобы уточнить: элементы 'input' имеют' значение '(некоторые исключения), но' div' и другие метки разметки не имеют 'значение' –

+0

'.empty', вероятно, более безопасное решение re: обработчики событий и т. Д. –

1

Другой вариант, кроме тонкого раствора из @Krishna, было бы отключить элементы; отключенные элементы формы не отправляются с формой. Так, что-то вроде:

$("#dvChooseDental").show('slow').find(':input').prop('disabled', false); 
$("#dvDentalWaive, #dvCanDentalDate, #dvCanDentalDep, #dvDHMO").hide('slow').find(':input').prop('disabled', true); 

Это будет иметь дополнительное преимущество, не имея, чтобы воссоздать ваш HTML после слива его ранее.

+0

Спасибо. Я еще не пробовал ответить от Кришны, но я попробовал Майка. Я должен сделать это «пуленепробиваемым», насколько это возможно. Вот что произошло. Я заполняю контент, связанный с первым переключателем. Затем я выбираю другой, который отключает первый ответ. Однако, если я настолько рассеян, что хочу вернуться к своему первому ответу или любому другому переключателю, он по-прежнему отключен. Может быть, это слишком много, но как я могу снова отключить «отключен», если кто-то в конце концов нажал третий или более раз? –