我有INPUT元素,我想重置以前的值(不是必需的原始值)。有2種方式:沒有FORM的復位INPUT
- 另一個變量保存價值,並再次將其拉出
- ,按ESC鍵。但我不希望用戶按ESC鍵,而是點擊一個按鈕。
因此,對於#2,我如何創建一個ESC鍵擊使用jQuery?
我有INPUT元素,我想重置以前的值(不是必需的原始值)。有2種方式:沒有FORM的復位INPUT
因此,對於#2,我如何創建一個ESC鍵擊使用jQuery?
下面是一個SSCCE:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2079185</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(':input.remember').each(function() {
$(this).attr('data-remember', $(this).val());
});
$('button.reset').click(function() {
$(':input.remember').each(function() {
$(this).val($(this).attr('data-remember'));
});
});
});
</script>
</head>
<body>
<input type="text" class="remember" value="foo">
<button class="reset">Reset</button>
</body>
</html>
這基本上存儲了onload期間每個輸入元素的原始值和一個remember
類,並指示該按鈕的類別爲reset
以在每次點擊時恢復它。
當你還在場內時,Esc仍然有效。
的時刻,你按一下按鈕,現場就會失去重點和值將被存儲在外地,所以你無法通過默認的瀏覽器程序撤消它..
您只能使用#1選項你提到..
在球場上的模糊(事件當你失去焦點),你應該保存的價值,當你點擊按鈕返回到存儲的一個..
忘記生成按鍵等事件。儘管您可以(以各種不可移植的方式)創建事件並將它們路由到事件處理系統,但這隻會導致調用適當的事件處理函數;它會而不是使瀏覽器執行用戶生成的操作(如按鍵或鼠標單擊)的默認操作。
在任何情況下,您在重置Escape時所說的行爲都是一個IE怪癖:在其他瀏覽器中,Escape沒有任何影響,甚至在IE中它也不可靠。具體來說,在一個正常形式中,一個Escape按鍵失去自上次焦點以來的更改,並且一行中的兩個Escape按鍵將整個表單重置爲初始值。但是,如果表單中有一個<input type="reset">
,則單個Escape按鈕將重置表單並對重置按鈕進行對焦。這樣可以更容易地意外丟失您輸入的所有內容,也是在您的表單中不包含重置按鈕的另一個好理由。
所以,如果你想重置到初始值,你可以撥打form.reset()
。如果您只想重置一個字段,則可以設置input.value= input.defaultValue
(或複選框/收音機爲input.checked= input.defaultChecked
,選項爲defaultSelected
)。
但是,如果你想是存在在當時的場是最後的焦點,因爲IE瀏覽器的行爲時,有沒有復位按鈕,你將不得不做一些可變記憶,例如:
值var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});
其實這是正確/最佳答案。感謝您的清晰和詳細的解釋。你讓我今天一整天都感覺很好 :) :) – 2010-08-24 11:18:02
每個元素(輸入,複選框,廣播)都有一個屬性,其中包含默認值,該元素是初始化的。 此方案不適用於以前的值。
// pseudocode
input.defaultValue;
radio.defaultChecked;
checkbox.defaultChecked;
通過按ESC鍵設置默認值輸入:
$(document).ready(function(){
// reset by pressing ESC with focus on input
$('input').keypress(function(e) {
if (e.keyCode == 27) {
this.value = this.defaultValue;
}
});
});
對於未來的觀衆 - 有一個默認的JavaScript屬性稱爲'defaultValue'。您可以在各個元素上使用'input.value = input.defaultValue'。當外部變量已經存在時,沒有必要保存數據。 – Shadow 2013-07-22 01:50:40