我首先要说的是,我不知道为什么会这样,而且就在昨天它工作得很好。我有这个输入(它保存在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";
}
}
});
}
}
答案 0 :(得分:0)
好的,所以我想我是从一个差异中在github中想出来的。唯一真正的变化是CSS。输入似乎是继承了包含表的div的最近更改,该表从右向左设置滚动(方向:rtl;),这将光标一直设置到右边,并且由于某种原因,创建了这个问题。如果我将输入本身设置为方向:ltr;问题是固定的。
所以我想知道,为什么方向:rtl毁了输入?