Firefox焦点错误

时间:2016-05-03 21:46:18

标签: javascript html firefox razor focus

在更改之前,我正在使用焦点事件来保存输入值。

onfocus="saveTemp(this);"

在saveTemp中

function saveTemp(item)
{
    tempVal = item.value;
}

没什么特别的......

在我的chrome 49.0.2623.112 m(64位)中,一切都很完美。在输入处单击鼠标,它将保存该值。但是使用Firefox它有错误。

当我在输入中直接点击Firefox中的数字时,它会很好地聚焦。但是当我在上一次点击后立即点击填充区域中的另一个输入时,它会在前一个输入上调用焦点事件。因此它节省了不同输入的值。

接下来我意识到,当我在输入的填充中点击干净页面加载后,它会在Firefox中调用onchange事件。

我有Firefox 46.0.1

是错误还是功能?我怎么能反对呢?

编辑:

正如我所说,尽管我在Razor View和WebGrid中生成HTML代码,代码并没有什么特别之处。由于页面中有多个选项卡,因此使用了idPrefix。

new WebGridColumn{
    Header="Price",
    Format = @<text>
        <input type="number" id="@(Model.idPrefix + "InPrice_" + item.pk_id)" value="@item.price" placeholder="Price" onfocus="@(Model.idPrefix)saveTemp(this);" onchange="@(Model.idPrefix)reSum1(this);" />
    </text>
},

和JS代码

var @(Model.idPrefix)oldPrice;
function @(Model.idPrefix + "reSum1")(item)
{
    if(item.value == "")
        item.value = 0;
    if(@(Model.idPrefix + "oldPrice") == "")
        @(Model.idPrefix + "oldPrice") = 0;
    $("#@(Model.idPrefix)LblSumPrice")[0].innerHTML = parseFloat($("#@(Model.idPrefix)LblSumPrice")[0].innerHTML) - parseFloat(@(Model.idPrefix + "oldPrice")) + parseFloat(item.value);

    @(Model.idPrefix + "oldPrice") = item.value;
}

function @(Model.idPrefix + "saveTemp")(item)
{
    @(Model.idPrefix + "oldPrice") = item.value;
}

生成的专栏:

<td>
    <input type="number" id="INV_InPrice_4194" value="0" placeholder="Price" onfocus="INV_saveTemp(this);" onchange="INV_reSum1(this);">               
</td>

生成的功能:

var INV_oldPrice;
function INV_saveTemp(item)
{
    INV_oldPrice = item.value;
}

function INV_reSum1(item)
{
    if(item.value == "")
        item.value = 0;
    if(INV_oldPrice == "")
        INV_oldPrice = 0;
    $("#INV_LblSumPrice")[0].innerHTML = parseFloat($("#INV_LblSumPrice")[0].innerHTML) - parseFloat(INV_oldPrice) + parseFloat(item.value);

    INV_oldPrice = item.value;
}

正如我所说,所有代码都生成正常并在chrome中正常工作。 IE无法找到生成的JS函数,但它可能针对不同的主题。

0 个答案:

没有答案