2017-03-09 39 views
2

我會開始說我不知道​​爲什麼會發生這種情況,而就在昨天它工作得很好。我有這個輸入(它被保存在Onblur事件中),並且我可以編輯輸入中除了最後兩個字符或任何字段中的數字之外的所有內容。這是固定的,但由於某種原因。我似乎沒有回想起今天上午之前發生的事情。所以我期待Rod Serling在任何時候進來,並告訴我,我實際上是在黃昏時區。我已經切換回任何以前的提交,當我新的工作,並由於某種原因,問題仍然存在。 (即使在硬刷新和刷新內容,以防JS失效)。一切正常,模糊值正確保存,這只是一個簡單的事實,我不能改變輸入域中的最後兩個字符! (對不起,那是一個深夜)無法編輯HTML文本輸入中的最後兩個字符

編輯:對不起,我應該說明它開始時是這樣的:

<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"; 
     } 
    } 

    }); 

} 
} 
+2

通常不需要使用'.setAttribute()'和'getAttribute() - DOM將標準屬性作爲屬性提供。因此,'elm.id'是「id」值,'elm.value'是「value」等。 – Pointy

+1

無論如何,你的意思是「編輯」?你是否說過,當你將注意力集中在''元素上時,你不能交互式地改變價值的最後部分? – Pointy

+0

你可以在JS小提琴中重現嗎? –

回答

0

好了,我想我理解了它在github上從差異。唯一真正的變化是CSS。輸入似乎是繼承了最近對包含表格的div的更改,該表格將設置從右向左滾動(方向:rtl;),這將光標設置到最右邊,出於某種原因,創建這個問題。如果我將輸入本身設置爲方向:ltr;問題是固定的。

所以我想知道,爲什麼方向:rtl破壞輸入?

相關問題