0

我用 分配了所需的标签class='ShowSave',确保SaveButton容器在启动时不显示,然后SaveButton在发生 keyup 事件(数据输入)时显示容器。

一切正常,除了 tab 键还会触发 keyup 事件,导致 SaveButton 容器在没有数据更改时显示。我尝试只使用$(".ShowSave").change(),但SaveButton容器仅在我离开现场后才显示。这是不可取的。

jQuery:

$(".SaveButton").css({'display':'none'});
$("input.ShowSave").keyup*( function(){ $(".SaveButton").css({'display':'block'}); } );

HTML:

<form>
    <td><input class='ShowSave' name="foo" type="text" value='foo' tabindex='1'></td><
    <td class='SaveButton' ><img class='SaveImage' onClick='jsPostMe()' /></td>
</form>

提前感谢您的任何建议。我正在使用没有插件的直接 jQuery。

4

2 回答 2

4

keyup如果您的事件,您想测试键码。像这样的东西:

$("input.ShowSave").keyup(function(e){
    var code = e.which;
    //keycode 9 = tab
    if(code == 9) {
       return;
    }
    //do something
});

这是一个工作示例

这当然意味着也可能按下其他无效的键。您还可以检查这些关键代码(这里是一个列表),但如果您改为跟踪文本框的原始值然后检查keyup.

像这样的东西(注意:它利用数据属性):

<input data-original="old" value="old" class="ShowSave" />

$("input.ShowSave").keyup(function(e){
    var original = $(this).data("original");
    var newValue = $(this).val();

    //check if value has changed
    if(original == newValue){
        $(".SaveButton").hide();
    }
    else{
        $(".SaveButton").show();
    }
});

这是一个例子

于 2013-05-20T15:40:41.480 回答
2

像这样的东西

$("input.ShowSave").keyup(function(e){
    if(e.which != 9){
        $(".SaveButton").css({'display':'block'});
    }
});
于 2013-05-20T15:43:52.493 回答