2012-09-21 53 views
1

是否有可能僅恢復表單的一部分?例如,我想重置everyhting在fieldset#1,但保留所有其他值在fieldset#2:僅重置表單中的字段集並保留所有其他值

<form> 
    <fieldset id="1">…</fieldset> 
    <fieldset id="2">…</fieldset> 
</form> 

我當然可以使用Javascript成爲/ jQuery的解決方案是這樣的(由心臟寫的,未測試) :

$('#1 :input').val(''); 

但是這不會恢復以前設置的默認值。或者我必須事先存儲所有的默認值,我必須檢查textareas,輸入,複選框等......是否有另一種方法做到這一點?

+2

恐怕沒有其他的方式來做它,但存儲初始值並稍後設置它們:/ – scumah

回答

2

不知道這是你的意思,但是這將過濾不具備的twoid所有字段集,然後復位內的表單元素字段集爲默認值(請注意defaultValue將只輸入/文字區域合作!):

$(document).ready(function() { 

    $('#btn-reset').on('click', function(e) { 
    e.preventDefault(); 

    $('form > fieldset').filter(function() { 
     return $(this).prop('id') !== 'two'; 
    }).children(':input').each(function() { 
     $(this).val(this.defaultValue); 
    }); 

    }); 
}); 

例如標記

<form> 

    <fieldset id="one"> 
     <input type="text" value="this is a default value" /> 
     <textarea>this is another default value</textarea> 
     <p>this paragraph doesn't get looped over</p> 
    </fieldset> 

    <fieldset id="two"> 
     <input type="text" value="text here.." /> 
     <textarea>hello world!</textarea> 
    </fieldset> 

    <button id="btn-reset">Reset</button> 

</form> 

Here's a fiddle

更改所有的值,然後單擊重置,都在第一字段集的價值將被重置爲默認值,而第二組將保持不變。

+0

感謝您的回答。這非常有幫助。不知道'defaultValue' - 這非常流暢,節省了很多工作。非常感謝。 – insertusernamehere

0

你可以使用KnockoutJS來做到這一點。使用默認值創建視圖模型。

+0

這聽起來很有趣。我會看看那個。感謝您的提示。 – insertusernamehere

0

沒有JavaScript沒有辦法做到這一點...重置按鈕將始終重置整個表單元素。

相關問題