I'm using jquery hide, show function in my signup form. By default my div is hidden as you see from script. Also there are 2 buttons: Submit and Reset. All works well, but there is 1 problem: it doesn't hide the divs #warr_details1 and #warr_details2 after resetting form. How can i hide them after form reset?
UPDATE
<form id="reg" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<fieldset>
<legend>Şirkət Haqqında</legend>
<table>
<tr><td width="270px" align="left">Şirkət: <input placeholder="Şirkət" type="text" name="company"></td>
<td width="340px" align="right">Ünvanı: <input placeholder="Ünvanı" type="text" name="address"></td></tr>
</table>
</fieldset>
<fieldset>
<legend>Məsul şəxs</legend>
<table>
<tr>
<td width="270px" align="left">Məsul şəxs: <input placeholder="Məsul şəxs" type="text" name="contact_name"></td>
<td width="340px" align="right">Əlaqə telefonu: <input placeholder="Əlaqə telefonu" type="tel" name="contact_phone"></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>Zəmanət</legend>
<table>
<tr><td rowspan="2">
<label for="warr">Zəmanət</label><input type="radio" name="warr" value="1">Var
<input type="radio" name="warr" value="0">Yoxdur
</td>
<td id="warr_details1">Verilmə tarixi (<input id="todayBox" type="checkbox"> Bugün) <input type="text" placeholder="Verilmə tarixi" id="warr_start" name="warr_start"/></td>
<script type="text/javascript">
$("#tod开发者_高级运维ayBox").change(function() {
var dateStr;
if (this.checked) {
var now = new Date();
dateStr = now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear();
} else {
dateStr = "";
}
$("#warr_start").val(dateStr);
});
</script>
</tr>
<tr id="warr_details2">
<td>Neçə il müddətinə? <input type="number" min="0" name="warr_year"/></td>
</tr>
<script type="text/javascript"/>
$(document).ready(function(){
$("#warr_details1").hide();
$("#warr_details2").hide();
$("input[name='warr']").click(setDisplay);
$("input[type='reset']").click(function() {
setTimeout(setDisplay, 1); // setDisplay after the form is reset
});
function setDisplay() {
var val = $("input[name='warr']").val();
if (val === '1') {
$("#warr_details1").show();
$("#warr_details2").show();
} else if (val === '0' || val === '') {
$("#warr_details1").hide();
$("#warr_details2").hide();
}
}
});
</script>
</table>
</fieldset>
<table>
<tr>
<td colspan="2" style="text-align:center"><input type="submit" class="button red" name="submit" value="OK" />
<input type="reset" class="button white" value="Təmizlə" /></td>
</tr>
</table>
</form>
Put your hiding logic into a common function that you can call from multiple places. Then, call that function from all the places that you want it to be active, including upon a click of the reset button. Now that I can see your HTML, something like this should work:
$("#warr_details1").hide();
$("#warr_details2").hide();
$("input[name='warr']").click(setDisplay);
$("input[type='reset']").click(function() {
setTimeout(setDisplay, 1); // setDisplay after the form is reset
});
function setDisplay() {
var val = $("input:radio[name=warr]:checked").val();
if (val === '1') {
$("#warr_details1").show();
$("#warr_details2").show();
} else if (!val || val === '0') {
$("#warr_details1").hide();
$("#warr_details2").hide();
}
}
And a demonstration: http://jsfiddle.net/jfriend00/5cFCb/.
try delegate()
$(document).ready(function(){
$("#warr_details1").hide();
$("#warr_details2").hide();
$("body").delegate("input[name='warr']", 'click', function(){
if ($(this).val() === '1')
{
$("#warr_details1").show();
$("#warr_details2").show();
}
if ($(this).val() === '0')
{
$("#warr_details1").hide();
$("#warr_details2").hide();
}
if ($(this).val() === '')
{
$("#warr_details1").hide();
$("#warr_details2").hide();
}
});
});
精彩评论