Javascript 在可编辑材质表上,如何限制用户不能输入字符、特殊字符或负数?
我使用的是可编辑的材质表,对于其中一列,我希望用户只能输入数字,而不能输入任何字符或特殊字符。我查看了material table网站上的验证部分,但没有任何相关内容 这是站点提供的可编辑材质表的代码示例:Javascript 在可编辑材质表上,如何限制用户不能输入字符、特殊字符或负数?,javascript,reactjs,material-table,Javascript,Reactjs,Material Table,我使用的是可编辑的材质表,对于其中一列,我希望用户只能输入数字,而不能输入任何字符或特殊字符。我查看了material table网站上的验证部分,但没有任何相关内容 这是站点提供的可编辑材质表的代码示例: function Editable() { const { useState } = React; const [columns, setColumns] = useState([ { title: 'Name', field: 'name' }, { title:
function Editable() {
const { useState } = React;
const [columns, setColumns] = useState([
{ title: 'Name', field: 'name' },
{ title: 'Surname', field: 'surname', initialEditValue: 'initial edit value' },
{ title: 'Birth Year', field: 'birthYear', type: 'numeric' },
{
title: 'Birth Place',
field: 'birthCity',
lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
},
]);
const [data, setData] = useState([
{ name: 'Mehmet', surname: 'Baran', birthYear: 1987, birthCity: 63 },
{ name: 'Zerya Betül', surname: 'Baran', birthYear: 2017, birthCity: 34 },
]);
return (
<MaterialTable
title="Editable Preview"
columns={columns}
data={data}
editable={{
onRowAdd: newData =>
new Promise((resolve, reject) => {
setTimeout(() => {
setData([...data, newData]);
resolve();
}, 1000)
}),
onRowUpdate: (newData, oldData) =>
new Promise((resolve, reject) => {
setTimeout(() => {
const dataUpdate = [...data];
const index = oldData.tableData.id;
dataUpdate[index] = newData;
setData([...dataUpdate]);
resolve();
}, 1000)
}),
onRowDelete: oldData =>
new Promise((resolve, reject) => {
setTimeout(() => {
const dataDelete = [...data];
const index = oldData.tableData.id;
dataDelete.splice(index, 1);
setData([...dataDelete]);
resolve()
}, 1000)
}),
}}
/>
)
}
函数可编辑(){
const{useState}=React;
const[columns,setColumns]=useState([
{title:'Name',field:'Name'},
{标题:“姓氏”,字段:“姓氏”,initialEditValue:“初始编辑值”},
{title:'Birth Year',字段:'Birth Year',键入:'numeric'},
{
标题:“出生地”,
字段:“出生地”,
查找:{34:'İstanbul',63:'Şanlıurfa'},
},
]);
const[data,setData]=useState([
{姓名:'Mehmet',姓氏:'Baran',出生年份:1987,出生城市:63},
{姓名:'Zerya Betül',姓氏:'Baran',出生年份:2017年,出生城市:34},
]);
返回(
新承诺((解决、拒绝)=>{
设置超时(()=>{
setData([…data,newData]);
解决();
}, 1000)
}),
onRowUpdate:(新数据、旧数据)=>
新承诺((解决、拒绝)=>{
设置超时(()=>{
常量数据更新=[…数据];
const index=oldData.tableData.id;
数据更新[索引]=新数据;
setData([…dataUpdate]);
解决();
}, 1000)
}),
onRowDelete:oldData=>
新承诺((解决、拒绝)=>{
设置超时(()=>{
常量数据删除=[…数据];
const index=oldData.tableData.id;
数据删除。拼接(索引,1);
setData([…dataDelete]);
解决()
}, 1000)
}),
}}
/>
)
}
例如,如何验证用户没有为出生年份输入字符串或负数?任何帮助都将不胜感激。您的问题已经有了答案。在标题为“出生年份”的列上,类型设置为“数字!”:) 您还可以添加自己的自定义组件来编辑每一列,如下所示:
{
title: 'Birth Year',
field: 'birthYear',
editComponent: (props: any) => (
<Input
defaultValue={props.value}
onChange={(e) => props.onChange(e.target.value)}
type="number"
/>
},
{
标题:“出生年份”,
字段:“生日”,
editComponent:(道具:任意)=>(
props.onChange(e.target.value)}
type=“编号”
/>
},
您的问题已经有了答案。在标题为“出生年份”的列上,类型设置为“数字!”:)
您还可以添加自己的自定义组件来编辑每一列,如下所示:
{
title: 'Birth Year',
field: 'birthYear',
editComponent: (props: any) => (
<Input
defaultValue={props.value}
onChange={(e) => props.onChange(e.target.value)}
type="number"
/>
},
{
标题:“出生年份”,
字段:“生日”,
editComponent:(道具:任意)=>(
props.onChange(e.target.value)}
type=“编号”
/>
},
在执行此操作时,我如何确保用户不能输入负数?如果您导入自己的输入字段,您可以这样设置最小值:它可以工作,但现在允许用户输入负数,这是不需要的。您可以共享您的代码吗?它应该有min=“0”在输入元素上执行此操作时,如何确保用户不能输入负数?如果您导入自己的输入字段,您可以这样设置最小值:它可以工作,但现在允许用户输入负数,这是不需要的。您可以共享您的代码吗?输入元素上应该有min=“0”