jQuery MiniUI

标题: textbox怎么清空内容 [打印本页]

作者: 焰尾迭    时间: 2014-1-6 22:42:08     标题: textbox怎么清空内容

<td>
      <input id="txtUserCode" class="mini-textbox" style="width: 100%;" />
</td>

现在前台是这么布局的,说明一点不在form界面中

我js里面是这么写的
tree.on("nodeselect", function(e) {
         mini.get("txtUserCode").setValue("");              
    });

当tree节点点击时,清空输入框的值为什么没有作用

作者: factory    时间: 2014-1-7 09:23:50

你看具体的代码执行到了没
作者: 焰尾迭    时间: 2014-1-7 14:25:46

factory 发表于 2014-1-7 09:23
你看具体的代码执行到了没

代码执行了的,但是现象是只有点击了tree的其它项再回来点刚才的那个才会清空
作者: felt    时间: 2014-1-7 14:34:38

焰尾迭 发表于 2014-1-7 14:25
代码执行了的,但是现象是只有点击了tree的其它项再回来点刚才的那个才会清空 ...

你监听的是nodeselect,如果你选中的节点没改变是不会触发的
作者: 焰尾迭    时间: 2014-1-7 17:43:16

felt 发表于 2014-1-7 14:34
你监听的是nodeselect,如果你选中的节点没改变是不会触发的

选中其它节点不算改变吗
作者: felt    时间: 2014-1-7 17:46:30

焰尾迭 发表于 2014-1-7 17:43
选中其它节点不算改变吗

算啊,你点击前面选中的节点就不会触发了
作者: factory    时间: 2014-1-7 17:50:18

焰尾迭 发表于 2014-1-7 14:25
代码执行了的,但是现象是只有点击了tree的其它项再回来点刚才的那个才会清空 ...

如果要点击已经选中的节点,继续触发事件,你应该监听nodeclick事件
nodeselect事件对已经select的节点是不会触发的
作者: 焰尾迭    时间: 2014-1-7 17:56:53

factory 发表于 2014-1-7 17:50
如果要点击已经选中的节点,继续触发事件,你应该监听nodeclick事件
nodeselect事件对已经select的节点是不 ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Tree 树形控件</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /><link href="../demo.css" rel="stylesheet" type="text/css" />

   
    <script src="../../scripts/boot.js" type="text/javascript"></script>
   
   

</head>
<body>
    <h1>Tree 树形控件</h1>
    <input id="tb" class="mini-textbox" name="tb" value="1"/>
    <div style="font-weight:bold;">当前选中节点:<span id="nodeText" style="color:Blue;"></span></div>
    <table>
        <tr>
            <td valign="top" style="width:300px;">
                <ul id="tree1" class="mini-tree" url="../data/tree.txt" style="width:300px;padding:5px;"
                    showTreeIcon="true" textField="text" idField="id" value="base" expandOnNodeClick="true">        
                </ul>
               
            </td>
           
        </tr>
    </table>
   

        
    <script type="text/javascript">

        
        
      window.onload=function(){
          var tree=mini.get("tree1");
          mini.parse();
          tree.on("nodeselect",function(){
  
             mini.get("tb").setValue("1");
          });
         
      }
    </script>

    <div class="description">
        <h3>Description</h3>
        <p>            
        </p>
    </div>
</body>
</html>
作者: 焰尾迭    时间: 2014-1-7 17:57:29

焰尾迭 发表于 2014-1-7 17:56
Tree 树形控件
   

这个是我在tree的运行代码里面写的例子,看看哪里有问题
作者: factory    时间: 2014-1-8 10:03:42

焰尾迭 发表于 2014-1-7 17:57
这个是我在tree的运行代码里面写的例子,看看哪里有问题

这是因为,当你输入完内容,再去点击tree节点的时候,确实是执行了输入框的setValue(),输入框的值也确实被赋值了

但是,miniui的输入框在输入内容之后,是在失去焦点的时候,才会把你录入的文本更新到他的值,并且激发valuechanged事件, 所以导致,你setValue()执行了,但是后来又失去了焦点,你录入的文本,又再次把你setValue()的值给覆盖掉了,其实里面有一个过程, 比如,
录入333,快速点击了node,setValue()成1, 这时候输入框失去焦点,内部把你的333赋值给输入框,又变成了333

解决方法:
tree.on("nodeselect", function () {
            var tb = mini.get("tb");
            tb.blur();
            tb.setValue("11");
        })

在setValue()之前,强行让输入框失去下焦点即可
作者: 焰尾迭    时间: 2014-1-8 10:58:26

factory 发表于 2014-1-8 10:03
这是因为,当你输入完内容,再去点击tree节点的时候,确实是执行了输入框的setValue(),输入框的值也确实被赋 ...

明白了谢啦




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2