2014-11-06 64 views
0

我希望我的文本框在用户保存数据时清除缓存。我希望页面中的对话框清除(重置)所有数据,而无需刷新页面。清除文本框,无需刷新页面

我已经尝试把这个代码在JavaScript

 _self.someValueHere(""); 

,也试图把这个代码在HTML中。

 onfocus="if(this.value=='A new value') this.value=''; 

仍然不起作用。

下面是一段我的html代码:

 <p> 
      <label data-bind="text: key"></label><br/> 
      <input type="text" data-bind="value: newInfo, valueUpdate:'afterkeydown'" style="width: 196px" /> 
      <button data-bind="click: addInfo" >Add</button> 
      <br/> 
      <select size=5 style="width:200px" 
       data-bind="options: infos, value: selectedInfo"> 
      </select> 
      <button data-bind="click: removeInfo">Remove selected</button> 
     </p> 

这里是我的javascript

 _self.newInfo = ko.observable(""); 
     _self.selectedInfo = ko.observable(); 
     _self.infos = ko.observableArray(); 
     _self.addInfo = function() { 
      if(_self.newInfo() != "") { 
       var validateInput = inputChecker(_self.newInfo(), _self.nfield); 
       if(validateInput == "") { 
        var is_unique = true; 
        $.each(_self.infos(), function(key, val) { 
         if(val == _self.newInfo()) { 
          is_unique = false; 
          _self.newInfo(""); 
          console.log("first"); 
         } 
        }); 
        if(is_unique) { 
         _self.infos.push(_self.newInfo()); 
         _self.newInfo(""); 
         console.log("second"); 
        } else { 
         alert("Duplicate entry"); 
        } 
       } else { 
        alert(validateInput); 
       } 
      } else { 
       alert("Nothing to add"); 
      } 
      return false; 
      _self.newInfo(""); 
     }; 
     _self.removeInfo = function() { 
      _self.infos.remove(_self.selectedInfo()); 
     }; 
    } 

回答

0

return语句后无法执行代码,所以第二行这里没有影响:

return false; 
_self.newInfo(""); 

只需将它们交换:

_self.newInfo(""); 
return false; 
+0

感谢上百万的解决方案。我发现我应该先执行代码清除文本框,然后在该页面打开对话框。大拇指为好答案! – lizzie288 2014-11-07 03:52:24