小编Ant*_*ine的帖子

如果用户登录,我该如何实时查询?

我正在使用Ajax为我的网站构建一个简单的支持聊天.我想检查我当前正在聊天的用户是否离开了浏览器.

目前,我通过在客户端设置间隔功能来创建具有名称的文件,从而构建该功能: userId.txt

在管理区域中,我创建了一个检查是否userId.txt存在的区间函数.如果存在,则删除它.如果自定义间隔函数没有重新创建文件 - 下次admin函数将发现该文件不存在时,它会将customer标记userId为非活动状态.

抽象表示:

customer -> interval Ajax function -> php [if no file - create a new file]
admin -> interval Ajax function -> php [if file exists - delete the file] -> return state to Ajax function and do something
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来实现您能想到的这个功能?

javascript php ajax session

14
推荐指数
3
解决办法
3040
查看次数

带有圆括号的正则表达式

我正在尝试编写将接受以下电话号码格式的表达式:

508 736 756
505050505
+48 505 505 505
(+48) 505 505 505
++48 505 505 505
(++48) 505 505 505
(23)692 36 99
23 692 36 99
Run Code Online (Sandbox Code Playgroud)

我写了下面的表达式

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$
Run Code Online (Sandbox Code Playgroud)

但是,此表达式仅涵盖下面列出的格式:

508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99
Run Code Online (Sandbox Code Playgroud)

转义括号字符时出现问题:().这就是我无法涵盖以下格式的原因:

(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99
Run Code Online (Sandbox Code Playgroud)

我尝试用反斜杠逃避它们,但由于某种原因它不起作用.

... [(] [+] {0,2} [)]?...

演示:https://regex101.com/r/hY5tG4/2

php regex brackets escaping preg-match

8
推荐指数
1
解决办法
100
查看次数

如何在崇高文本3中复制当前打开文件的文件名?

如何在sublime文本3中复制当前打开的文件的文件名?如果默认情况下这是不可能的,也许你知道一些使用键盘快捷键完成该工作的sublime扩展.

sublimetext sublimetext3

7
推荐指数
1
解决办法
2657
查看次数

Laravel Carbon 不考虑时区 DST

鉴于我的UsersTableSeeder.php课程,我正在使用循环为我的数据库植入假数据:

$numberOfUsers = 150;

DB::table('users')->delete();

$faker = Faker::create();

for ($i = 1; $i <= $numberOfUsers; $i++) {
    DB::table('users')->insert([
        'id' => $i,
        'firstName' => $faker->firstName,
        'lastName' => $faker->lastName,
        'email' => $faker->email,
        'password' => bcrypt("123"),
        'created_at' => Carbon::now()->addDays((-5 * $i) - 2)->format('Y-m-d H:i:s'),
        'updated_at' => Carbon::now()->addDays(-5 * $i)->format('Y-m-d H:i:s'),
    ]);
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当我的日期时间值生成时,它有可能落在 DST 区域中,例如在 2017-03-12 02:00:00 和 2017-03-12 02:59:59 之间(确实发生),它给了我以下错误:

[PDOException]
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2016-03-13 02:08:11' for column 'created_at' at row 1
Run Code Online (Sandbox Code Playgroud)

现在我明白我不能把这样的值放在我的数据库中,因为我的数据库足够聪明,知道这个时间区域并没有完全退出。但是有什么办法可以让 Carbon 足够聪明以考虑 …

php timezone laravel

6
推荐指数
1
解决办法
5169
查看次数

Select 组件中 MenuItem 上的 Material-UI 工具提示 zIndex

我的问题很简单,我有一个<Tooltip>组件围绕着一个<Select>组件,当我单击“选择”时,工具提示会显示在菜单项上,如下所示:

正常行为:

没有 MenuItem 的工具提示

不那么正常的行为:

菜单项上的工具提示

因此,我保留了 Material-UI 和工具提示的所有默认值:zIndex: 1500但据我所知,MenuItem 没有默认值。我尝试将 MenuItem 的 zIndex 设置为 1501,但它仍然具有相同的行为。

我想知道将工具提示留在 MenuItem 后面的干净方法是什么,如果不可能,则在打开 Select MenuItems 时隐藏工具提示...

我的代码如下所示:

<Tooltip title={'Filter by status'}>
    <Select value={this.state.status} onChange={this.handleChange.bind(this, Filter.Status)}>
        {statuses.sort(this.filterItemSortFn).map(item => {
            return (<MenuItem style={{zIndex: 1501}} value={item}>{item}</MenuItem>);
        })}
    </Select>
</Tooltip>
Run Code Online (Sandbox Code Playgroud)

如果我将工具提示的 zIndex 设置为较小的值,它会隐藏在 menuItems 后面,但我真的不想使用默认值,因为它也会干扰其他 zIndex 值。

我做了一个CodeSandbox:https ://codesandbox.io/s/rn68z4xlo

javascript css reactjs material-ui

5
推荐指数
2
解决办法
1万
查看次数

如何检查是否在textarea中使用'shift'键按下了'enter'键

我知道shift key代码是16,enter key代码是13.

//@ catching any 'enter' keypress in textarea.
    function textareaOnEnter(){
        $('textarea#someId').keypress(function(e)
        {
          if(e.which == 13)
          {
            //.. works only for 'enter'
          }
        });     
    }
Run Code Online (Sandbox Code Playgroud)

我认为它可以像这样简单:

    function textareaOnShiftAndEnter(){
        $('textarea#someId').keypress(function(e)
        {
          if(e.which == 13 && e.which == 16)
          {
            //.. don't work for nothing
          }
        });     
    }
Run Code Online (Sandbox Code Playgroud)

但当然它根本无法正常工作.如何检查shift + enter按键?

javascript jquery enter keypress shift

3
推荐指数
1
解决办法
674
查看次数

如果beta beta功能是必需的,那么使用Beta版本的Material-UI可以获得具有大量内容的长期React Web应用程序

正在使用Material-UI的beta版本来实现长期愿景如果测试版功能是必需的,那么使用大量内容的React Web应用程序是一个好主意,并且使用遵循Google的Material Design Guidelines的UI库是必需的.

我看了React-Toolbox,MUI和Material Design Lite之类的替代品,它们接近我们需要的东西,但是像Material-UI那样大而且受欢迎的产品会更好,这就是我犹豫的原因.

我一直在寻找使用测试版的风险,并看了看材料,UI的V1.0.0-betaXX版本的22预发行票据,它似乎并没有被那个坏,但也许

  1. 我可以使用稳定版本v0.20.0并尝试找到一种方法来添加我需要的功能(flex网格就是其中之一)并最终迁移到更新版本的Material-UI(其中还包括从反应中迁移) v15对v16做出反应,因为Material-UI v1.0.0只会暂时支持React v15).

  2. 我可以使用测试版v1.0.0-beta.22并解决错误(如果/当我遇到它们时,如果有的话),逐渐迁移到React v16并最终迁移到Material-UI v1的发布版本. 0.0.

无论哪种方式,我认为从v1版本迁移到v1版本比从0.20.0迁移到1.0.0要容易得多,不是吗?但是,与此同时,测试版是测试版,所以它不是最终产品,我不保证任何东西.

beta frontend web-applications reactjs material-ui

2
推荐指数
1
解决办法
483
查看次数

Material-UI-Select / MenuItem组件上的工具提示在选择后保持显示

我正在使用Material-UI的Select组件,并在其周围带有工具提示,如下所示:

<Tooltip title="Tooltip Test">
  <Select value={this.state.age} onChange={this.handleChange}
    inputProps={{ name: "age", id: "age-simple" }}
  >
    <MenuItem value="">
      <em>None</em>
    </MenuItem>
    <MenuItem value={10}>Ten</MenuItem>
    <MenuItem value={20}>...</MenuItem>
  </Select>
</Tooltip>
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我单击“选择”组件时,在使用“选择”期间,甚至在选择一个项目之后,工具提示仍会显示。

我希望它在单击“选择”后立即消失,这样它就不会停留在MenuItems上(更改zIndex不是我想要的解决方案),即使在菜单中选择一个项目之后,它也仍然不会显示。

我用一个简单的问题做了一个codeandbox:https ://codesandbox.io/s/yvloqr5qoj

但是我正在使用打字稿,这是我正在使用的实际代码:

受控工具提示

import * as React from 'react';
import PropTypes from 'prop-types';

import withStyles, { WithStyles } from 'material-ui/styles/withStyles';
import { Tooltip } from 'material-ui';

const styles = {

}

type State = {
    open: boolean,
};

type Props = {
    id: string,
    msg: string,
    children: PropTypes.node,
};


class ControlledTooltip extends …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui

1
推荐指数
2
解决办法
2272
查看次数