Selaa lähdekoodia

计算公式输入框只能输入数字1346

zhouna 6 vuotta sitten
vanhempi
commit
be3d145d28
1 muutettua tiedostoa jossa 13 lisäystä ja 2 poistoa
  1. 13 2
      src/components/ChronicInfo/index.jsx

+ 13 - 2
src/components/ChronicInfo/index.jsx

@@ -168,12 +168,23 @@ class ChronicInfo extends React.Component{
     const {addAssessItem} = this.props;
     addAssessItem(v,pIndex,i);
   }
+  handleReg(e){   //只能输入数字
+    const hasDot = e.target.value.indexOf('.')!=-1;
+    const key = e.key;
+    if(key!='Backspace'&&((/[^\d]/.test(key)&&key!='.')||(key=='.'&&(hasDot||!e.target.value)))){
+      e.preventDefault();
+    }
+  }
   handleInputformula(id,calcuContent,i,e) {
     const {calcuValues} = this.state;
     let obj = deepClone(calcuValues);
     let values = (obj&&obj[id])||deepClone(calcuContent);
-    values[i].value = e.target.value;
+    const txt = e.target.value;
+    values[i].value = txt.replace(/[\u4e00-\u9fa5]|[^\d|.]/g,'');       //处理中文输入法的情况
     obj[id] = values;
+    if(/[\u4e00-\u9fa5]|[^\d|.]/g.test(txt)){
+      e.target.value = txt.replace(/[\u4e00-\u9fa5]|[^\d|.]/g,'');
+    }
     this.setState({
       isCalculated:false,
       calcuValues:obj
@@ -359,7 +370,7 @@ class ChronicInfo extends React.Component{
                                           <span>{'请输入'+item.name+':'}</span>
                                         </td>
                                         <td>
-                                          <input type="text" placeholder="请输入"  value={item.value} onInput={this.handleInputformula.bind(this,v.id,details,idd)}/>
+                                          <input type="text" placeholder="请输入"  value={item.value} onKeyDown={this.handleReg.bind(this)} onInput={this.handleInputformula.bind(this,v.id,details,idd)}/>
                                         </td>
                                         <td>
                                           <span>{item.uint}</span>