jQuery的选择器中的通配符[id^=’code’]

1.选择器

(1)通配符:

  $("input[id^='code']");//id属性以code开始的所有input标签

  $("input[id$='code']");//id属性以code结束的所有input标签

  $("input[id*='code']");//id属性包含code的所有input标签

(2)根据索引选择

  $("tbody tr:even"); //选择索引为偶数的所有tr标签

  $("tbody tr:odd"); //选择索引为奇数的所有tr标签

(3)获得jqueryObj下一级节点的input个数

  jqueryObj.children("input").length;

(4)获得class为main的标签的子节点下所有<a>标签

  $(".main > a");

(5)选择紧邻标签

  jqueryObj.next("div");//获取jqueryObj标签的后面紧邻的一个div,nextAll获取所有

 

2.筛选器  

//not

  $("#code input:not([id^='code'])");//id为code标签内不包含id以code开始的所有input标签

 

3.事件

//处理文本框上的键盘操作

jqueryObj.keyup(function(event){

var keyCode = event.which;//获取当前按下键盘的键值,回车键为13

}

 

4.工具函数

$('#someField').val($.trim($('#someField').val()));//消除空格,语法:$.trim(value)

jQuery选择器大全

 

在Dom 编程中我们只能使用有限的函数根据id 或者TagName 获取Dom 对象. 然而在jQuery 中则完全不同,jQuery 提供了异常强大的选择器用来帮助我们获取页面上的对象, 并且将对象以jQuery 包装集的形式返回。本文主要对常用的jQuery 选择器进行一个介绍及归类。

jQuery 选择器大体上可分为 4 类:基本选择器、层次选择器、过滤选择器、表单选择器。
其中过滤选择器可以分为:简单过滤选择器、内容过滤选择器、可见性过滤选择器、属性过滤选择器、子元素过滤选择器、表单对象属性过滤选择器。

基本选择器:

$("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素
$("div")                     选择所有的div标签元素,返回div元素数组
$(".myClass")           选择使用myClass类的css的所有元素
$("*")                        选择文档中的所有的元素
可以运用多种的选择方式进行联合选择:例如$("#myELement,div,.myclass")

层叠选择器:

$("form input")         选择所有的form元素中的input元素
$("#main > *")          选择id值为main的所有的子元素
$("label + input")     选择所有的label元素的下一个input元素节点
经测试选择器返回的是label标签后面直接跟一个input标签的所有input标签元素
$("#prev ~ div")       同胞选择器
该选择器返回的为id为prev的标签元素的所有的属于同一个父元素的div标签

基本过滤选择器:

$("tr:first")               选择所有tr元素的第一个
$("tr:last")                选择所有tr元素的最后一个
$("input:not(:checked) + span")   
过滤掉:checked的选择器的所有的input元素
$("tr:even")               选择所有的tr元素的第0,2,4… …个元素(注意:因为所选择的多个元素时为数组,所以序号是从0开始)
$("tr:odd")                选择所有的tr元素的第1,3,5… …个元素
$("td:eq(2)")             选择所有的td元素中序号为2的那个td元素   
$("td:gt(4)")             选择td元素中序号大于4的所有td元素
$("td:ll(4)")              选择td元素中序号小于4的所有的td元素
$(":header")
$("div:animated")

内容过滤选择器:

$("div:contains('John')")  选择所有div中含有John文本的元素
$("td:empty")           选择所有的为空(也不包括文本节点)的td元素的数组
$("div:has(p)")        选择所有含有p标签的div元素
$("td:parent")          选择所有的以td为父节点的元素数组

可视化过滤选择器:

$("div:hidden")        选择所有的被hidden的div元素
$("div:visible")        选择所有的可视化的div元素

属性过滤选择器:

$("div[id]")              选择所有含有id属性的div元素
$("input[name='newsletter']")    选择所有的name属性等于'newsletter'的input元素
$("input[name!='newsletter']")  选择所有的name属性不等于'newsletter'的input元素
$("input[name^='news']")         选择所有的name属性以'news'开头的input元素
$("input[name$='news']")         选择所有的name属性以'news'结尾的input元素
$("input[name*='man']")          选择所有的name属性包含'news'的input元素
$("input[id][name$='man']")    可以使用多个属性进行联合选择,该选择器是得到所有的含有id属性并且那么属性以man结尾的元素

子元素过滤选择器:

$("ul li:nth-child(2)"),$("ul li:nth-child(odd)"),$("ul li:nth-child(3n + 1)")
$("div span:first-child")          返回所有的div元素的第一个子节点的数组
$("div span:last-child")           返回所有的div元素的最后一个节点的数组
$("div button:only-child")       返回所有的div中只有唯一一个子节点的所有子节点的数组

表单元素选择器:

$(":input")                  选择所有的表单输入元素,包括input, textarea, select 和 button
$(":text")                     选择所有的text input元素
$(":password")           选择所有的password input元素
$(":radio")                   选择所有的radio input元素
$(":checkbox")            选择所有的checkbox input元素
$(":submit")               选择所有的submit input元素
$(":image")                 选择所有的image input元素
$(":reset")                   选择所有的reset input元素
$(":button")                选择所有的button input元素
$(":file")                     选择所有的file input元素
$(":hidden")               选择所有类型为hidden的input元素或表单的隐藏域

表单元素过滤选择器:

HTML5 跨文档消息传输

对窗口对象的message事件进行监听 

window.addEventListener("message", function(event) { 
// 处理程序代码 
}, false); 

使用window对象的postMessage()方法向其他窗口发送消息,该方法的定义如下: 

otherwindow.postMessage(message, targetOrigin);

该方法使用两个参数:第一个参数为所发送的消息文本,但也可以是任何JavaScript对象(通过JSON转换对象为文本);第二个参数为接收消息的对象窗口的URL地址,可以在URL地址字符串中使用通配符“*”指定全部地址,不过建议使用准确的URL地址。otherwindow为要发送窗口对象的引用,可以通过window.open()方法返回该对象,或通过对window.frames数组指定序号(index)或名字的方式来返回单个frame所属性的窗口对象。 

示例 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"/> 
<title>跨文档消息传输示例主文档</title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
// 监听message事件。 
window.addEventListener("message", function(event) { 
// 忽略指定URL之外的页面发送的消息。 
if(event.origin != "http://www.blue-butterfly.net") return; 
alert(event.data); // 显示消息。 
}, false); 
$("#iframeContent").load(function(event) { 
// 向子页面发送消息 
this[0].postMessage("Hello", "http://www.blue-butterfly.net/test/"); 
}); 
}); 
</script> 
</head> 
<body> 
<header> 
<h1>跨域通信示例</h1> 
</header> 
<iframe id="iframeContent" width="400" src="http://www.blue-butterfly.net/test/"></iframe> 
</body> 
</html> 

子页面中的代码如下: 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"/> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
window.addEventListener("message", function(event) { 
if(event.origin != "http://Lulingniu") return; 
$("#console").append(event.origin).append("传来的消息:").append(event.data); 
// 向主页面发送消息。 
event.source.postMessage("Hello, there is :" + this.location, event.origin); 
}, false); 
}); 
</script> 
</head> 
<body> 
<p>这是iframe中的内容。</p> 
<div id="console"></div> 
</body> 
</html> 

•通过对window对象的message事件进行监听,可以接收消息。 

•通过访问message事件的origin属性,可以获取消息的发送源(本例中主页面的发送源为“http://Lulingniu”,子页面的发送源为“http://www.blue-butterfly.net”)。注意:发送源与网站的URL地址不是一个概念,发送源只包括域名与端口号,为了不接收其他源恶意发送过来的消息,最好对发送源做检查。 

•通过访问message事件的data属性,可以取得消息内容(可以是任何JavaScript对象,使用JSON)。 

•使用postMessage()方法发送消息。 

•通过访问message事件的source属性,可以获取消息发送源的窗口的代理对象。

City Square Mall Search Batch Update 的规则

单张voucher 做action的流程是:

1.点击detail后获取该张voucher可做的action( get_voucher_actions($voucher_details) )

function get_voucher_actions( $voucher_details )
 {
  //$this->load->model('access_control', 'vms_acl');
  
  $voucher_id = $voucher_details['voucher_id'];
  
  //we also need to check the stock of the voucher to dertimine the actions.
  //e.g. new voucher in Finance stock cannot be re-issued.
  $actions = array();
  
  //if( $this->vms_acl->is_csa_user())
  //{
   switch($voucher_details['status_id'])
   {
    case $this->voucher_lkup->get_status_id_by_name('new'):
     //the following actions are only available if the voucher is not locked.
     if( $voucher_details['is_locked'] == 'N' )
     {
      if( $voucher_details['stock_id'] != $this->voucher_lkup->get_stock_id_by_name('expiry') )
      {
       $actions[] = 'miss'; //from any stock (except for expiry stock)
      }
      
      if( $voucher_details['stock_id'] == $this->voucher_lkup->get_stock_id_by_name('csa') ) //Cancal should be done on own stock.
      {
       $actions[] = 'cancel';
      }
      
      if( $voucher_details['stock_id'] == $this->voucher_lkup->get_stock_id_by_name('cse') )
      {
       //Re-issue (via scanner or manual input) Physically the voucher was already issued
       //- For Promo, Counter sales, partner  vouchers - From CSE stock
       $actions[] = 'reissue'; //(by CSA only)
      }
      
      //change expiry date, Can only be changed if the voucher has not  expired, Tenant voucher only
      //status must be new.
      $tenant_class_ids = $this->voucher_lkup->get_voucher_class_ids( $this->voucher_api->_class_tenant );
      if( in_array($voucher_details['class_id'], $tenant_class_ids) 
        && strtotime($voucher_details['expiry_date'] . ' 23:59:59') >= strtotime( date('Y-m-d 23:59:59') ) 
       &&  $voucher_details['stock_id'] == $this->voucher_lkup->get_stock_id_by_name('csa') 
      )
      {
       //$actions[] = 'change_expiry';
      }
     }
     
     break;
    
    case $this->voucher_lkup->get_status_id_by_name('cancelled'): 
     //request reinstatement-cancelled,
     //check if someone requested un-cancelled. if so, show approve reinstatement-cancelled
     $rt = $this->voucher_api->voucher_is_pending_approve_uncancel( $voucher_id );
     if(FALSE === $rt && $voucher_details['is_locked'] == 'N')
     {
      $actions[] = 'request_uncancel';
     }
     elseif( !$this->vms_acl->is_same_login_user( $rt['request_user'] ) ) //only if the user is different 
     {
      $actions[] = 'approve_uncancel';
     }  
     break;
     
    
    case $this->voucher_lkup->get_status_id_by_name('missing'):
     //request reinstatement-missing,
     //check if someone requested un-missing. if so, show approve reinstatement-missing
     $rt = $this->voucher_api->voucher_is_pending_approve_unmissing( $voucher_id );
     if(FALSE === $rt && $voucher_details['is_locked'] == 'N')
     {
      $actions[] = 'request_unmissing';
     }
     elseif( !$this->vms_acl->is_same_login_user( $rt['request_user'] ) ) //only if the user is different 
     {
      $actions[] = 'approve_unmissing';
     }
     break;
    
    case $this->voucher_lkup->get_status_id_by_name('issued'):
     //unissue, replace, extend expiry date. (only when the expiry date of voucher set)
     
     //only when the voucher is not expired
     if( strtotime($voucher_details['expiry_date'] . ' 23:59:59') >= strtotime( date('Y-m-d 23:59:59') )  && $voucher_details['is_locked'] == 'N' )
     {
      $actions[] = 'unissue';
      $actions[] = 'replace';
     }
     //$actions[] = 'extend';

     break;
    case $this->voucher_lkup->get_status_id_by_name('reimbursed'):
     $rt = $this->voucher_api->voucher_is_pending_approve_unreimburse( $voucher_id );
     if(FALSE === $rt && $voucher_details['is_locked'] == 'N')
     {
      $actions[] = 'request_unreimburse';
     }
     elseif( !$this->vms_acl->is_same_login_user( $rt['request_user'] ) ) //only if the user is different
     {
      $actions[] = 'approve_unreimburse';
     }
     break;
     //un-reimburse
    
    default:
     break;
   }//end of switch
  //}
  
  
  if( empty($voucher_details['alert_tag']) && $this->vms_acl->is_csa_user() )
  {
   $actions[] = 'tag'; //tag will be available in any status, only csa can tag.
  }
  elseif(!empty($voucher_details['alert_tag']))
  {
   $rt = $this->voucher_api->voucher_is_pending_approve_untag( $voucher_id );
   if(FALSE === $rt && $this->vms_acl->is_csa_user())
   {
    $actions[] = 'request_untag';//un-tag will be available if there is any tags of this voucher.
   }
   elseif( !$this->vms_acl->is_same_login_user( $rt['request_user'] ) && $this->vms_acl->is_cd_user() ) //only if the user is different 
   {
    $actions[] = 'approve_untag'; //only CD can do approve
   }
  }
 
  $rt = array();
  if(!empty($actions))
  {
   foreach($actions as $action_name)
   {
    $action_id = $this->voucher_lkup->get_action_id_by_name ( $action_name );
    
    $rt[$action_name] = $this->voucher_lkup->get_action_desc_by_id ( $action_id );
   }
  }
  
  return $rt;
 }

operation 里voucher的Available Actions update操作

流程纪录:

1.delete_issue

    a.delete_campaign_issue_info //删除voucher_campaign_issue里对应voucher_id的内容

    b.delete_voucher_action          //删除voucher_action里对应voucher_id的内容

2.issue

    a.update_vouchers_data_by_voucher_id

    b.insert_voucher_action

    c.insert_campaign_issue_info

 

执行操作如下:

UPDATE voucher SET transfer_channel = 2 where voucher_id BETWEEN 467880 AND 467954
update voucher_campaign_issue set remarks = concat(remarks,'<br>Payment: Cash') where voucher_id  BETWEEN 467880 AND 467954

做GVMS Reimburesment Impor异常的处理

客户发过来的表格会把以前错误的reimburesment信息一起发过来,我们手动修改

例如这次在检查完第一步之后出现一条有问题的信息这个以前reimburesment过

------------------------------------------------

439533320OCBC 007685Pod Life Pte Ltd              2013-08-05PODLIP1  12-0145  SD 5333A            1406

------------------------------------------------

 

在voucher_store_submission里查找submission_id为5333的数据

------------------------------------------------

53332012-11-27 16:37:36240001505330'10144129','10145777','505819','505821'NNULL

------------------------------------------------

找到requisition_id为5330

然后在voucher_purchase_requisition里找到requisition_id为5330的数据

------------------------------------------------

53302012-11-27 16:37:4015043405333

------------------------------------------------

找到reimburse_id 为4340

然后在voucher_reimburse里找到reimburse_id 为4340的数据

------------------------------------------------

43402012-12-21 23:59:5910OCBC0075792012-12-21 00:00:00NULLVenderNumber:PODLIP1   BatchNumber:12-0111  InvoiceNumber:SD 5333 

------------------------------------------------

把cheque_no改为OCBC 007685 ,batch_number改为 12-0145  

evolution 1. 的operation

点击 "Release"后触发前端的investigation_button_release()方法ajax的url为http://test.com/evo/_panels_c/voucher/search_form/investigate

change_status"6-2"

status_id"6-1"

voucher_no"05-2"

 

investigate方法为:

    function investigate()

    {

        if(IS_AJAX)

     {

         $d_time = date('Y-m-d H:i:s');

         

         $voucher_no = $this->input->post('voucher_no'); // voucher No. with prefix

         $voucher_id = $this->input->post('voucher_id');

         $remarks = $this->input->post('remarks');

         $action = $this->input->post('action');

         $status_id = $this->input->post('status_id');

         $new_status = $this->input->post('change_status');

         

         $voucher_update_data = array();

         

         if($new_status != $status_id && ($status = $this->voucher_lkup->show_available_status_to_change()) && isset($status[$new_status]))

         {

             $new_description = $status[$new_status];

             $old_description = $status[$status_id];

             

             $new_channel = FALSE;

             if(strpos($new_status, '-') !== FALSE)

             {

                    $tmp = explode('-', $new_status);

                    $new_status = $tmp[0];

                    $new_channel = $tmp[1];

                    

                    $voucher_update_data['status_id'] = $new_status;

                    $voucher_update_data['transfer_channel'] = $new_channel == 'NIL' ? '' : $new_channel;

                }

                else

                {

                    $voucher_update_data['status_id'] = $new_status;

                }

                

                $action_data = array();

                $action_data['action_id'] = $this->voucher_lkup->get_action_id('change_status');

                $action_data['voucher_id'] = $voucher_id;

                $action_data['user_id'] = $this->voucher_lkup->_user_id;

                $action_data['action_time'] = $d_time;

                $action_data['comment'] = "From $old_description to $new_description";

                $this->voucher_batch->insert_voucher_action($action_data);

                

                // if status = tenant_submit and voucher existed in tenant_submit_error table, delete it from error table.

                if($status_id == $this->voucher_lkup->get_status_id('tenant_submitted'))

                {

                    $this->voucher_batch->delete_tenant_submission_error($voucher_id);

                }

         }

         

            // do investigation on $voucher_id.

            $b_investigate = true;

            

            if($action == 'release')

            {

                $action_data = array();

                $action_data['action_id'] = $this->voucher_lkup->get_action_id('release_investigation');

                $action_data['voucher_id'] = $voucher_id;

                $action_data['user_id'] = $this->voucher_lkup->_user_id;

                $action_data['action_time'] = $d_time;

                $action_data['comment'] = $remarks;

                $this->voucher_batch->insert_voucher_action($action_data);

                

                if($status_id == $this->voucher_lkup->get_status_id('tenant_submitted'))

                {

                    $errors = $this->voucher_batch->get_tenant_submission_error($voucher_id);

                    if(!empty($errors))

                    {

                        $voucher_update_data['submission_id'] = $errors['submission_id'];

                        $this->voucher_batch->delete_tenant_submission_error($voucher_id);

                        

                        //check if tenant_submit action recorded in voucher_action, if not, record it.

                        $log = $this->voucher_batch->get_voucher_action($voucher_id, $this->voucher_lkup->get_action_id('tenant_submit'));

                        if(empty($log))

                        {

                            $action_data = array();

                            $action_data['action_id'] = $this->voucher_lkup->get_action_id('tenant_submit');

                            $action_data['voucher_id'] = $voucher_id;

                            $action_data['user_id'] = $this->voucher_lkup->_user_id;

                            $action_data['action_time'] = $errors['submission_time'];

                            $this->voucher_batch->insert_voucher_action($action_data);

                        }

                    }

                }

                $voucher_update_data['under_investigation'] = 'N';

                $this->voucher_batch->update_vouchers_data_by_voucher_id($voucher_id, $voucher_update_data);

            }

            else

            {

                $voucher_update_data['under_investigation'] = 'Y';

                $this->voucher_batch->update_vouchers_data_by_voucher_id($voucher_id, $voucher_update_data);

                

                $action_data = array();

                $action_data['action_id'] = $this->voucher_lkup->get_action_id('investigate');

                $action_data['voucher_id'] = $voucher_id;

                $action_data['user_id'] = $this->voucher_lkup->_user_id;

                $action_data['action_time'] = $d_time;

                $action_data['comment'] = $remarks;

                $this->voucher_batch->insert_voucher_action($action_data);

            }

            

            $result = array();

            $result['result'] = ($b_investigate !== FALSE) ? '1' : '2';

            $result['voucher'] = $this->_search_individual($voucher_no);

            

            echo json_encode($result);

     }

    }

在investigate里做了2个操作,一个是$this->voucher_batch->insert_voucher_action($action_data);
一个是 $this->voucher_batch->update_vouchers_data_by_voucher_id($voucher_id, $voucher_update_data);

如何调节自己情绪

 

       这两天回淮南和长辈沟通了很多,特别是王刚。他们都是年长我很多的,这2天他们给我的思想就是让自己开心一点,不要总为别人所说所想去影响自己。而正是因为太在意别人的看法,别人的想法而导致我的自私与不自信。正视自己很重要。长大了就像老董说的,我们这个年级已经形成了自己的人生观价值观,不是别人说什么就认为是什么的了。

 

以下是几个网上摘抄的缓解压力的方法

1、正确评价自己,不要过高要求自己。正确认识自己、评价自己是个性发展的重要前提之一。自己对自己的认识、评价是在发展过程中逐渐培养起来的。对自己有正确的认识,做自己可以胜任的事情,对自己有个合理的预期和评价。 

2、培养独立的人格,减少他人评价的影响。认识自己的价值,明确应该坚持什么、反对什么,有明确的是非界限,且不能人云亦云,不要被周围所左右。 

3、多与人交流沟通,及时倾诉自己感受到的无助和不快。交流是释放压力的交效途径,交流的过程也是自我反思的过程。通过与他人交谈,获取心理支持,增强自信心。 

4、利用各种社会支持。任何心理成熟的独立的现代人,都需要他人的帮助,广泛的社会支持是缓解压力不可或缺的途径。家人是社会支持网络的重要组成部分。此外,平时需注意扩大自己的交际范围,从没有利益冲突的第三方寻求心理支持。 

5、从多纬度审视自己,建立自我同一性。由于自我意识具有复杂性与多维性,青年需要在多向度中审视自我、调整自我,寻找自我意识的统一点,整合自我意识,向理想自我靠近。 

 

推荐方法:

 

1 和朋友聊天,一起玩玩。

2 有一个自己的爱好,这样能分散自己的精力!

3 周末逛街,买自己喜欢的东西,衣服什么的,提高自己的自信心!

4 旅游!爬山是最好的了!