浏览代码

addition: let user input last carry

Bernadette Elena Hammerle 3 年之前
父节点
当前提交
f21c29cefc
共有 1 个文件被更改,包括 9 次插入5 次删除
  1. 9 5
      src/Addition.js

+ 9 - 5
src/Addition.js

@@ -45,19 +45,22 @@ function Addition() {
     }else{
       // add input number to result array
       resArr.unshift(imdtRes);
-      if(nosLeft === 0){
-        setShowAlert(true);
-      }
     }
   }
 
-  const handleCarryChange = (e, noOfDigits, idx) => {
+  const handleCarryChange = (e, noOfDigits, idx, nosLeft) => {
     if(typeof carryArr === "undefined"){
        setCarryArr(Array(noOfDigits).fill("-"));
     }
     let carryArrCopy = [...carryArr]
     carryArrCopy[idx] = e.target.value
     setCarryArr(carryArrCopy);
+    let noCarry = carryArrCopy[0] === "0" || carryArrCopy[0] === undefined
+    if(nosLeft === 0 || (nosLeft === 1 && noCarry) ||
+       // stop after first iteration, numbers left is undefined at first
+       (nosLeft !== nosLeft && realResult.toString().length === 1 && noCarry)){
+      setShowAlert(true);
+    }
   }
 
   const handleSubmit = (e) => {
@@ -95,6 +98,7 @@ function Addition() {
         handleResChange(".", nosLeft)
         imdtResIdx = imdtResIdx - 1;
         carryOffset = 1;
+        nosLeft = nosLeft - 1;
       }
 
       for (let n in numbers){ // iterate numbers
@@ -141,7 +145,7 @@ function Addition() {
             {carryText}
           </label>
           <input
-            onChange={(e) => handleCarryChange(e, noOfDigits, imdtResIdx)}
+            onChange={(e) => handleCarryChange(e, noOfDigits, imdtResIdx, nosLeft)}
             type="text" id="input_carry" size="2"
             aria-labelledby="input_carry_label" aria-required="true"
             ref={carryInputField}/>