无法编辑HTML文本输入中的最后两个字符

时间:2017-03-09 16:52:19

标签: javascript html html5

我首先要说的是,我不知道为什么会这样,而且就在昨天它工作得很好。我有这个输入(它保存在Onblur事件中),我可以编辑输入中的所有内容,除了最后两个字符或任何字段中的数字。虽然由于某种原因这是固定的。我似乎没有记得今天早上之前发生这种情况。所以我期待Rod Serling随时进来告诉我,事实上我正处于暮光之城。我已经切换回任何早期的提交,当我新的工作时,由于某种原因问题仍然存在。 (即使在硬件刷新和刷新内容之后,以防JS过时)。其他所有工作,模糊值正确保存,这只是一个简单的事实,我不能改变输入字段中的最后两个字符! (对不起,这是一个深夜)

编辑:对不起,我应该声明它是这样开始的:

<td onclick="addInput(this);" id="website_revenue:2017-03-16">$479,432.00</td>

输入添加得很好。 如果输入中的值是:

<input type="text" id="input:website_revenue:2017-03-06" value="$479,432.00" />

我无法编辑“00”。

我首先想到,也许这是十进制问题,但我无法编辑整数中的最后两个字符:

<input type="text" id="input:website_revenue:2017-03-06" value="360">

在这种情况下,我无法编辑“60”。

也许这是我整个睡眠不足,但在我15年的编程之前我从未见过这样的事情......而且我没有想到为什么会这样。控制台中没有线索,没有标记错误。有任何想法吗?我在暮光之城吗?

这是使用的JS,昨天工作得很好:

function addInput(elm) {
  if (elm.getElementsByTagName('input').length > 0) return;

  var value = elm.innerHTML;
  elm.innerHTML = '';

  var id = elm.getAttribute('id');

  if(value == "$0.00" || value == "0"){
    value = "";
  }

  var input = document.createElement('input');
  input.setAttribute('type', 'text');
  input.setAttribute('id', 'input:'+id);
  input.setAttribute('value', value);
  input.setAttribute('style', 'width:100px;');
  input.setAttribute('onBlur', 'closeInput(this)');
  elm.appendChild(input);
  input.focus();
}

function closeInput(elm) {
  var td = elm.parentNode;
  var value = elm.value;

  td.removeChild(elm);

  if(value == ""){
     td.innerHTML = "0";
  }else{  

  $.ajax({
    type: "GET",
    url: "/pages/process.php",
    data: "edit_data="+elm.id+"&value="+value,
    dataType: 'json',
    success: function(ret){
      if(ret.success === true){
         td.innerHTML = ret.value;

         if(ret.math === true){
           var targets = ret.targets;

           for (i in targets){
              for (key in targets[i]){
                if(key == "key"){
                  var newid = targets[i][key];
                }

                if(key == "value"){
                  var newval = Math.round(targets[i][key]);
                  var elm = document.getElementById(newid);
                  elm.innerHTML = newval;
                }
              }
           }

         }
      }else{
         $("#error").html("ERROR: These fields can only accept numbers!!");
         td.innerHTML = "ERROR";
      }
    }

  });

 } 
}

1 个答案:

答案 0 :(得分:0)

好的,所以我想我是从一个差异中在github中想出来的。唯一真正的变化是CSS。输入似乎是继承了包含表的div的最近更改,该表从右向左设置滚动(方向:rtl;),这将光标一直设置到右边,并且由于某种原因,创建了这个问题。如果我将输入本身设置为方向:ltr;问题是固定的。

所以我想知道,为什么方向:rtl毁了输入?