我正在使用它来拯救表单中的文本,以防用户在没有提交的情况下转到另一页面。但是,当用户按下提交按钮时,如何清除表单?
function rescuefieldvalues(idarray){
for (var i=0; i<idarray.length; i++){
var el=document.getElementById(idarray[i])
if (!/(text)/.test(el.type)) //skip to next element if it isn't a input type="text" or textarea element
continue
if (el.addBehavior && !window.sessionStorage){ //use IE behaviors to store info?
el.style.behavior='url(#default#userData)'
el.load("userentereddata")
}
var persisteddata=(window.sessionStorage)? sessionStorage[idarray[i]+'data'] : (el.addBehavior)? el.getAttribute('dataattr') : null
if (persisteddata) //if rescued data found for this element
el.value=persisteddata
el.onkeyup=function(){
if (window.sessionStorage)
sessionStorage[this.id+'data']=this.value
else if (this.addBehavior){
this.setAttribute("dataattr", this.value)
this.save("userentereddata")
}
} //onkeyup
} //for loop
}
<form>
<p>Name: <input type="text"/></p>
<p>Address*: <input type="text" id="address" style="width:200px;" /></p>
<p>Feedback*:<br />
<textarea id="feedback" style="width:300px;height:150px">Your feedback here</textarea><br
/>
<input type="submit" /></p>
</form>
<script type="text/javascript">
rescuefieldvalues(['address', 'feedback']) //rescue data
</script>
答案 0 :(得分:0)
您正在设置键/值对:
sessionStorage[this.id+'data']=this.value
(这里只是注释,我更喜欢语法:sessionStorage.setItem(key, value)
)。
同样,您应该迭代已存储的密钥并使用以下方法清除它们:
sessionStorage.removeItem(key)
如果您没有要清除的密钥,则可以迭代sessionStorage
属性,就像它是常规对象一样。
您还可以使用sessionStorage.clear()
清除所有会话存储。
当然,您必须创建一个执行此操作并将其绑定到表单的submit事件的函数。