我有一個DIV,slideToggles沒有問題。它揭示了訪問者的一些額外選項。表單提交後,如果遇到錯誤,訪問者按下瀏覽器後退按鈕進行糾正。與所有額外的選項的div是不是在最後左邊的狀態,而是它崩潰了。任何想法如何我可以防止這一點?Jquery SlideToggle預覽狀態瀏覽器後退按鈕
$("#sendChange").click(function() {
$("#sendSpec").slideToggle("slow");
if($('#sendWhen').html() == 'IMMEDIATLY'){
$('#sendWhen').html('AS SPECIFIED');
}else{
$('#sendWhen').html('IMMEDIATLY');
}
return false;
});
<div class="fcenter stdBox line25" style="margin-bottom:0px;" id="emlOptions">
<div>
<label class="lab">Send email: </label><span id="sendWhen" class="blue">IMMEDIATLY</span> <a href="#" id="sendChange">[change]</a>
</div>
<div style="display:none" id="sendSpec">
<label for="userTz" class="lab">Timezone: </label><select name="userTz" id="userTz" onchange="tzChange(this.value)" class="field" >
<option value="Pacific/Apia">(GMT-11:00) Midway Island, Samoa</option>
<option value="Pacific/Honolulu">(GMT-10:00) Hawaii</option>
...
</select> <br />
<label for="delayTimeDate" class="lab">Time & Date: </label><input type="text" class="field" name="delayTimeDate" id="datepicker" />
<br /><br />
</div>
所以我嘗試添加這在FF但不是Opera合作的隱藏文本字段。 Opera忘記隱藏的字段值,但不是文本字段值,所以我將文本字段包裝在顯示器中:none div,它記住了值,但是在Opera瀏覽器更新了表單字段值之前,JavaScript會觸發。下面是代碼:
function sendSpec() {
$("#sendSpec").slideToggle("slow");
if($('#sendWhen').html() == 'IMMEDIATLY'){
$('#sendWhen').html('AS SPECIFIED');
$('#sendWhenState').val('1');
}else{
$('#sendWhen').html('IMMEDIATLY');
$('#sendWhenState').val('0');
}}
$("#sendChange").click(function() {
sendSpec();
return false;
});
if($('#sendWhenState').val() == 1){
sendSpec();
}
HTML是相同的,但與添加的formfield
<div style="display:none"><input type="text" id="sendWhenState" value="0" /></div>
我不喜歡這個,但無法找到另一種方式。上面是一樣的只是增加了一個超時的,如果sendWhenState == 1,使Opera將有更新的領域之前,我檢查,像這樣的價值:
setTimeout(function(){
if($('#sendWhenState').val() == 1){
sendSpec();
}
},1000);
我是新來的,應該我已經回答了我的自己的問題,還是我有權利用我提出的解決方案來編輯問題?
發表一些代碼。你可以設置一個cookie – 2012-02-10 05:52:02
我寧願避免爲此使用cookie。如何隱藏表單字段呢? – dannix 2012-02-11 02:49:16
我試着用一個隱藏字段,似乎至少在FF中工作。任何人都知道這種方法的任何跨瀏覽器問題? – dannix 2012-02-11 03:20:16