[英]Reset INPUT without FORM
我有INPUT元素,我想重置以前的值(不是必需的原始值)。 有兩種方式:
那么對於#2,如何使用jquery創建ESC鍵擊?
這是一個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
for checkboxes / radios,類似defaultSelected
on options)。
但是,如果你想要在該字段最后一次聚焦時出現的值,因為IE在沒有重置按鈕時表現,你將不得不做一些變量記憶,例如:
var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});
每個元素(輸入,復選框,無線電)都有一個屬性,其中包含默認值,元素已初始化。 此方案不適用於以前的值。
// 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;
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.