不允许使用键的负值

Not allowing the negative values using keys

在我的应用程序中,我有一个带有一些文本的 ck 编辑器。文本被删除,用户使用 F1F2F3F4 键选择此删除文本。

如果用户在使用 F4 键多次选择相同文本时选择了一些使用 F1 键被击中的文本,则出现次数变为负数。他们不应该变成负数,应该停在零。下面是连续按 f4 的屏幕截图。次要行共同保险变为负数,有时 PGS 行变为负数。他们不应该变成负数,应该停在零。我该怎么做?

下面是 F3 和 F4 键的 javascript 代码

 if (event.data.$.keyCode == 114) {                             
                             label = document.getElementById('ctl00_ContentPlaceHolder1_lblMinorOccurences');
                             m = label.textContent.match(/^(.*?)(\d+)$/);
                             value = parseInt(m[2], 10);
                             value = isNaN(value) ? 0 : value;
                             if (start_element.$.innerHTML.search(/{.*}/) >= 0) {
                                 var index = start_element.$.innerHTML.search(/{.*}/);
                                 var str = null;
                                 if (index != -1) {
                                     str = start_element.$.innerHTML;
                                     if (start_element.$.innerHTML.search("{0.5}") >= 0) {
                                         label.textContent = m[1] + (value - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         return;
                                     }
                                     else if (start_element.$.innerHTML.search("{1.0}") >= 0) {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblMajorOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#ffff66'); start_element.appendText("{0.5}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }
                                     else if (start_element.$.innerHTML.search("{3.0}") >= 0) {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblCriticalOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#ffff66'); start_element.appendText("{0.5}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }
                                     else (start_element.$.innerHTML.search("{0.25}") >= 0)
                                     {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblPGSOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#ffff66'); start_element.appendText("{0.5}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }    
                                 }
                             }
                             else {
                                 start_element.setStyle('background-color', '#ffff66'); start_element.appendText("{0.5}");
                                 label.textContent = m[1] + (value + 1)
                             }
                         }
                         if (event.data.$.keyCode == 115) {
                             label = document.getElementById('ctl00_ContentPlaceHolder1_lblPGSOccurences');
                             m = label.textContent.match(/^(.*?)(\d+)$/);
                             value = parseInt(m[2], 10);
                             value = isNaN(value) ? 0 : value;
                             if (start_element.$.innerHTML.search(/{.*}/) >= 0) {
                                 var index = start_element.$.innerHTML.search(/{.*}/);
                                 var str = null;
                                 if (index != -1) {
                                     str = start_element.$.innerHTML;
                                     if (start_element.$.innerHTML.search("{0.5}") >= 0) {
                                         label.textContent = m[1] + (value - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         return;
                                     }
                                     else if (start_element.$.innerHTML.search("{1.0}") >= 0) {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblMajorOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#0bff01'); start_element.appendText("{0.25}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }
                                     else if (start_element.$.innerHTML.search("{3.0}") >= 0) {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblCriticalOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#0bff01'); start_element.appendText("{0.25}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }
                                     else (start_element.$.innerHTML.search("{0.5}") >= 0)
                                     {
                                         lblOther = document.getElementById('ctl00_ContentPlaceHolder1_lblMinorOccurences');
                                         mOther = lblOther.textContent.match(/^(.*?)(\d+)$/);
                                         valOther = parseInt(mOther[2], 10);
                                         valOther = isNaN(valOther) ? 0 : valOther;
                                         lblOther.textContent = mOther[1] + (valOther - 1);
                                         var txt = str.replace(/{.*}/, "");
                                         start_element.$.innerHTML = txt;
                                         start_element.setStyle('background-color', '#ffffff');
                                         start_element.setStyle('background-color', '#0bff01'); start_element.appendText("{0.25}");
                                         label.textContent = m[1] + (value + 1)
                                         return;
                                     }
                                 }
                             }
                             else {
                                 start_element.setStyle('background-color', '#0bff01'); start_element.appendText("{0.25}");
                                 label.textContent = m[1] + (value + 1)
                             }
                         }

主要是当我在已经使用其他键选择的文本上重复使用 F4 键时出现

要在零处停止,您需要使用简单的 if 条件检查当前值,或者您可以使用逻辑运算符来减少代码行数。

(value && value - 1)

上面的代码returns 0 如果值是0 否则减去它的值。这是因为 0 是虚假值,进一步的执行没有完成,只是 returns。结果代码如下:

label.textContent = m[1] +  (value && value - 1)

所以无论你在哪里递减值都做同样的事情。或者您可以使用三元运算符或简单的 if 条件来检查。例如:

if(value != 0) value--; // decrements value if not 0 
label.textContent = m[1] + value; // update with the value