grid
編集可能なセル(CellEditingプラグイン)を持つExtJS4.1.1で苦労しています。
人はセルに数式を入力できる必要があり、フィールドの値に結果を生成する必要があります。例:ユーザーが入力した場合(320*10)/4
、戻り値は。になります800
。または、ユーザーが入力した場合(320m*10cm)/4
、関数は数式から数学以外の文字を取り除き、それを計算する必要があります。
RegExpに置き換える(または一致させる)ことを検討していましたが、機能させることができないようです。それはNaNを返し続けます、そして私がそうするとき、それは私が必要とするものではなくconsole.log(e.value);
、だけを返します。originalValue
value
添付するコードはあまりありません。
onGridValidateEdit : function(editor,e,opts) {
var str = e.value.toString();
console.log(str);
var strCalc = str.match(/0-9+-*\/()/g);
console.log(strCalc);
var numCalc = Number(eval(strCalc));
console.log(numCalc);
return numCalc;
},
どちらが返されますか:str=321
strCalc=null
numCalc=0
入力すると321*2
。
助けていただければ幸いです。
GR。
アップデート:
Paul Schroederの入力に基づいて、私はこれを作成しました。
onGridValidateEdit : function(editor,e,opts) {
var str = e.record.get(e.field).toString();
var strCalc = str.replace(/[^0-9+*-/()]/g, "");
var numCalc = Number(eval(strCalc));
console.log(typeof numCalc);
console.log(numCalc);
return numCalc;
},
これは数値を計算しますが、グリッド自体に印刷して戻すことができません。コンソールではとが表示されますが、「NaN」と表示されtypeof=number
ますvalue=800
。
最終コード:
動作した最終的なコードは次のとおりです。
onGridValidateEdit : function(editor,e,opts) {
var fldName = e.field;
var str = e.record.get(fldName).toString();
var strCalc = str.replace(/[^0-9+*-/()]/g, "");
var numCalc = Number(eval(strCalc));
e.record.set(fldName,numCalc);
},