bs模态框中的form获取或设置表单及其中元素用nam不能用id?

bs模态框中的form获取或设置表单及其中元素用nam不能用id?

  • $('form#formid').submit(); 居然不能提交表单? 感觉好奇怪?

  • 最后用 alert($('form#formid').attr('form_some_attr_example_id')) 居然显示的是 undefined 然后再看 alert($('form#formid').attr('action')) 居然也是undefined?

  • 那么难怪$('form#formid').attr('action', 'some_action_addr') 设置表单的action地址自然就是无效的了, 甚至连 表单 $('form#formid') 都是undefined, 都没有获取到这个表单, 自然submit() 就不会生效 跳转, 也就是不提交表单了

=====================================================

这个只是在模态框中的表单, 才存在这样的问题? 而在html>body下的表单则不存在这样的问题?

也就是说, 模态框中的表单/及其下面的input组件 要获取它们, 要用 它们的 name属性 , 而不能使用 id属性??
用name属性可以获取 模态框中的表单 及其包含的input组件??

  • 是因为 每次创建 "新的" 模态框, id不能重复, 而name可以重复的原因吗?

=================================

多个按钮button打开同一个 模态框的时候, 如何清除 上一个按钮打开的模态框中的内容?

  • 首先, 应该是在 模态框的 show.bs.modal事件中去清除上一次的数据, 是在show方法后,单是表单还没有显示出来之前.
  • 其次是, 清除表单数据 是可以用reset()方法的 但是: jquery没有 reset()方法! 只有 submit() 事件方法.(有:reset选择器), 所以要用 $('form')[0].reset()
  • 也可以用其他变通的方法: `` $('form[name=mdForm] input').val('');`
  • 要注意的是: reset方法不会清除input[type=hidden]隐藏input的值????
  • reset方法和 $('form input').val('')的区别? reset()方法实际上并不是将表单的input清空, 而是 恢复(重置) input组件的值 为 它们的 "默认值" 所以如果<Input type="text" name="username" value="abc" >的话, 每次reset重置后input框都是abc, 而不是空. 所以用 $('form input').val('') 会更好更彻底
$('#logModal').on('show.bs.modal', function(e){
  // 应该先初始化表单数据, 而表单标题和usrtype可以随后获得
  $('form[name=mdForm] input').val('');    // 这个更安全更彻底
  // $('form')[0].reset();  这个也可以

  var button = $(e.relatedTarget);
  var btext = button.text();
  var bid = button.attr('id');

  var modal = $(this);
  modal.find('.modal-title').html("<font color=#363>"+btext+"</font>");
  modal.find('.modal-body input#usrtype').val(bid);
  // $('form')[0].reset();  放在这里也是可以的, 要注意: reset方法不会清除input[type=hidden]隐藏input的值?
});

在表单提交时, 如果是提交/传递的 敏感信息, 如用户名和密码不希望浏览者看到的话, 就要用 post方式提交信息. 这时, 就不需要(不必要)在 {:U('....')}方法中传递参数了.

直接在后台用 $_POST[...]来获取了.

tp中的DATA_PATH TEMP_PATH ??

ls -l (ll) 命令中的total是指 所列出的资源 占用的 blocks的总数

  • getconf PAGESIZE 命令可以得到系统 存储时的 block的大小, 一般是4kb, ll列出的是 每个文件/目录占用的bytes字节数
  • 存储文件时, 是按block 定量占用的,超过4kb的文件, 就占用多个"连续的?" blocks? 不足一个1block的 也占1个block. 而且不能 "插队, 抢位", (事实上,文件/目录是按 创建该文件时的时间先后来存放的, 而不是 你来堆放的), 最后所有的blocks加起来就是ll命令的total数

用select (* from ... ) into outfile ....导出时,无法写?

  • 在mysql内部, 用 show variables like "secure_file_priv%" 查看 secure_file_priv 变量的值, 是 null, 还是 没有, 还是具体的值 比如 '/opt'
  • 如果是null, 就不能导出; 如果是 "没有" 就没有限制, 如果是具体的值, 就只有在 指定的目录中导出;
  • 当然还得要 mysql 具有对指定目录的写权限
在 /etc/my.cnf文件中 的  [mysqld]节设置
[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# 设置mysql导入和导出权限?
secure_file_priv='/opt'  (用引号 'opt' 是正确的)

select ... into outfile 的一个例子 https://www.cnblogs.com/wxzhe/p/10831634.html

options导出选项:
fields terminated by描述字段的分隔符,默认情况下是tab字符(\t) 
optionally enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )  
lines terminated by : 行与行之间的分隔

root@newsdb 01:50:35>select * from t_hk_stock_news limit 3 into outfile "/db/test2.csv" fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by "\r\n";
Query OK, 3 rows affected (0.01 sec)

在logs中的 somedate.log文件中的 2000-1-1T10:00:00Z 表示的是UTC格式的时间, T表示的是time??

实际上, mysql还有很多"外部管理命令", 就是 不登陆mysql服务器, 仍然可以对服务器进行管理的工具 比如mysqladmin, mysqldump等等. 这些命令跟其他linux命令一样, 也可以用--help来查看命令的帮助, 比如: mysqladmin --help

  • msyql服务器的登录用户 -u root 和 linux的root帐户并不是 一回事! ?? msyql的-uroot 只不过是 "登录" mariadb服务器的一个账号,这个帐号跟其他登录mariadb服务器 的帐号的性质是一样的,只不过它的权限很大而已. 但是并不表示这个root就是 linux的帐户root.
  • 实际上 真正运行mysql服务器 进程的用户是 mysql ! 跟启动mysql的用户是foo还是 root 是无关的!
  • 所以在 mysql内部, 要导出数据时, 由于应用的是 mysql用户, 所以很多时候, 你可能会得到 [can't write permisson denied...]之类的错误, 就是因为 mysql用户没有这些
    目录的写 权限.

-mysql服务器会运行很多 线程 "thread id", 用 show processlist 查看线程id, 如果这个线程卡住了(比如执行某个很大表的一些操作, 表被卡住了), 就可以用 kill thread_id命令来结束它.

[root@localhost le]# ps -aux |grep 'mysql'
mysql     4134  0.0  0.1   5600  2936 ?        Ss   13:43   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql     4251  0.0  2.8 629020 70732 ?        Sl   13:43   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

## 前面两行才是真正运行mariadb服务器的用户, 即是mysql

le       4905  0.0  0.2  15356  6300 pts/1    S+   14:19   0:00 mysql -uroot -p  # 这一行表示 启动mysql 的用户  是 le
root      4908  0.0  0.0   5096  2200 pts/0    S+   14:19   0:00 grep --color=auto mysql  # 这一行表示 当前搜索/过滤 mysql关键字的用户 是 root

[root@localhost lee]# 

修改mysql登录密码的三个方法, 参考 https://blog.csdn.net/xuheng8600/article/details/80034647?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  • 外部命令 mysqldump -uroot password 'abc'
  • 进入mysql内, 使用set password=password('abc');
  • 进入mysql内, 用 update mysql.user set password=password('abc') where user='root'; 最后 刷新权限: flush privileges;

如果mysql服务器没有密码, 输入命令时,可以不用 -p选项, 就是: mysql -uroot 就好了, 只有设置了密码时, -p选项才是必须的,
当然在生产服务器上, 密码是必须的, 而且是强密码.

========================================================

关于vim中的命令问题, 与其到处gogl答案,不如直接在vim中看help!

使用ls使的显示问题%a, #a
ls是 show all buffers.
%: 表示在当前窗口中显示的buffer: buffer in the current window

: 表示 在同一个子窗口中, (如果曾经打开了多个buffer文件)可以交替打开的buffer文件. 用 ctrl+^ 操作, 或 :e # 命令就可以切换

而命令:bp或bn, 不是alternative buffer切换, 而是 在 minibufexploer窗口中, 按前后顺序排列的 buffer队列中的前一个和后一个buffer.

  • linux文件夹, 目录排序中, 箭头的方向代表 项目值,比如 size, modified time 等 增加的方向. (由此可以判断列表升序还是降序)

============================================================

关于tp中的缓存?

  • 目录? 缓存主要是放在 /App 下的Runtime目录 里面有 Data + Temp (这两个目录不分模块) + Cache + Logs(后两个目录分模块放置)

  • 默认的file缓存方式的缓存数据 放在 TEMP_PATH中, 几个路径是:
    DATA_PATH是 ./Piao/Runtime/Data/, TEMP_PATH是 ./Piao/Runtime/Temp/, 而 HTML_PATH 是 ./Piao/Html/
    HTML_PATH在创建 静态缓存 之前, 是没有生成的.

  • 在convention.php中设置的file缓存类型 的数据缓存默认目录是 'DATA_CACHE_PATH' => TMEP_PATH , 为什么使用 F 方法后的数据缓存文件却在DATA_PATH
    中了呢? 其实这个不矛盾: 说那个TEMP_PATH时说如果使用 S()函数的时候, 会生成在TEMP_PATH中.
    但是 F 函数在定义中 , 就规定了一个 缺省的默认参数,即这里的\(path, 它就是DATA_PATH, 其原型是: ` function F(\)name, $value='', \(path=DATA_PATH) {....} ` 所以用F()函数生成数据缓存时就是在 DATA_PATH中, 也就是说, 数据缓存目录有两个, 一个是DATA_PATH, 一个是TEMP_PATH, 那就看你是用的哪个函数. F()方法的第二个参数\)value是缓存的数据, 默认是空, 也就是说, 如果你想缓存一个 "空值", 你直接就可以用 F('cache_name')就好了, 不过写成 F('cache_name', '')更直观.

  • 如果缓存的数据是一个数组, 要获取缓存数组的元素值,要用 中括号, 而不能用点号或->

    if($cp = M('curp')->find()){
      $this->cp = $cp;
      F('curp', $cp);
    }else{
      F('curp', '');
    }

  //  $cache = F('curp');
    echo 'curp的 cury缓存数据是: '.F('curp')['cury'];die;  或: $cache['cury']

php的数据类型和恒等比较?

  • php的数据类型有: 字符串, 整数(10, 0x11十六进制, 011 8进制) , 浮点数, 逻辑数, 数组, 对象,null
  • 查看数据类型, 用gettype 和var_dump, 前者gettype 得到类型的"完整"字符串, 而var_dump得到简写的表示: 对应的是:
    gettype(\(var): string, integer, double, boolean, array, object, NULL var_dump(\)ar): string, int(10), float(2.1), bool(false), array, object, NULL
  • 而 tp中的 F('cache_name')数据缓存的结果, 可能是false, 也可能是null, 也可能是具体的值, 所以如果F(...) 返回的是false, 则用 !==null 判断时就会失败!

===============================================
对比比较js的变量类型? 参考: blog.csdn.net/weixin_33804990/article/details/88021078

  • js的变量类型较多: 像 string,number,boolean, undefined(一个变量定义后, 没有赋值比如var a; typeof a就是undefined), 检查用typeof
  • js的对于 null, array, object用typeof检查都会得到'object' , 所以要用 instanceof , 或 constructor 来检查, 但是 对于array数组由于 它的 __proto__原型链 属性对应的函数原型prototype 是像等的,所以 a_array_var.__proto__ === Object.prototype //返回true var_arr instanceof Array 会得到object
  • js检查变量类型的终极方法是用: Object.prototype.toString.call(a_var_to_check) 可以检查任何类型的js变量(包括基本类型的变量和引用类型的变量)

如何禁止表单中的 密码框被浏览器自动填充? 参考https://blog.csdn.net/zengdeqing2012/article/details/52514128

因为: 浏览器自动填充的是 在表单中找到的第一个类型为password的密码框,所以用一个隐藏的密码框来避免真正的密码框被自动填充

	      <div class="form-group">
		<label class="col-md-2 control-label" for="">密码:</label>
		<div class="col-md-10">
		  <input type="password" style="display:none">  // 隐藏的密码域
		  <input class="form-control" type="password" name="passwd" placeholder="输入密码">
		</div>

firefox的一个很好的插件 : colorZilla(颜色吸管, 颜色吸取器): 在about:addons中, 点 "get add-ons" 转到firefox的插件中心搜索即可. 该插件可以查看吸取历史, 更强大的是, 它可以分析 当前网页中所有存在的 css颜色! 而且指出该颜色 所使用的 选择器!

  • 在firefox的调试器中看到的 status code: 304 表示的是 该文件在web客户端的缓存 仍然有效, 所以不用再次 从服务器上下载了!
  • js中的console.log 现在不能直接在 console中查看了, 要打开 logging 标签页才能看到?

fileReader的属性和事件

reader = new FileReader() 这时reader实例有三个属性: error, result,和 readyState (0: 还没有加载任何数据(到内存), 1: 正在加载; 2: 完全加载到内存,即成功读取文件数据)
事件: onbort, onloadstart, onload, onloadend, onprogress
方法: bort(), load(), ....

FileReader { readyState: 1, result: null, error: null, onloadstart: null, onprogress: null, onload: null, onabort: null, onerror: null, onloadend: null } jquery.js%20line%202%20%3E%20eval:102:7
File.lastModifiedDate is deprecated. Use File.lastModified instead. jquery.js%20line%202%20%3E%20eval:94:6
FileReader { readyState: 2, result: "logo h1 { background-image: url…", error: null, onloadstart: obj.uploadAdd/</reader.onloadstart(), onprogress: null, onload: obj.uploadAdd/</reader.onload(), onabort: null, onerror: obj.uploadAdd/</reader.onerror(), onloadend: obj.uploadAdd/</reader.onloadend() } jquery.js%20line%202%20%3E%20eval:116:7

========================================

break is not in the loop or switch语句中?

  • 并不是说 break语句可以放在while循环内的任意地方, 必须放在 while 或switch 语句的 直接包含大括号中
  • 通常, 可能要在while中用if语句等进行条件判断, 以跳出while循环, 判断条件为真时, 不能就在这里break, 要在while大括号直接包含的区域 判断条件然后用break
     while(1){
	$('div.uc>p').html("正在读取数据, 请等待...");
	reader.onload = function(){
	  if(this.readyState == 2){
	    content = reader.result;
	    isReadSuc = true;
            // 不能在这里写break;
	  };
            // 也不能在这里写break;
	};
      if(isReadSuc)break;
      }

用这样的 while(1) 容易造成系统或浏览器卡死的问题?

      var isReadSuc = false;
      while(1){
	$('div.uc>p').html("正在读取数据, 请等待...");
	reader.onload = function(){
	  if(this.readyState == 2){
	    content = reader.result;
	    isReadSuc = true;
	  };
	};

	  if(isReadSuc)break;
      }

      $('div.uc>p').html(reader.result);
      $('div.showuc').css('display','block');

================================================================

bs中的全局 用来显示或隐藏的类? 可以在全局任意的使用!

  • 对于 任意的 元素都可以有效的是: .show, .hidden(或 .sr-only也可以隐藏)
  • 但是不要使用 .hide了, 现在已经被废除了
  • 也可以用 .invisible, 但是和 .hidden的区别是 一个的css 为 display:none, 一个的css为 display: invisibility

关于checkbox的两个属性checked, 和 value的区别?

  • 实际上这是两个互不相关, 没有半毛关系的两个属性! checkbox复选框的value值跟该复选框是否被选中还是没有被选中无关, 它的value值一直不变! 除非你设置了 当checked时的value1, 当unckecked时的valu2, 这样才会改变
  • attr用来明确的在元素上设置了 属性名称的 属性值 比如: attr('name') ; 而prop用来获取没有 明确设置属性名称的属性值, 比如 是否选中的状态: prop('checked"), is(':checked').
  • 不要企图 在 messager 消息框中(在回调函数中) 去获取 消息中的 input:checkbox的 选中状态! 因为单击"确定"时, 这个选中状态 你并不能获取到????:
posted @ 2020-02-22 11:46  noitanym  阅读(640)  评论(0编辑  收藏  举报