jQuery更改事件只触发一次 - editableTableWidget和autoNumeric插件

时间:2015-05-31 11:37:05

标签: jquery onchange

我使用了两个插件:autoNumericeditableTableWidget。 第一个格式化货币,第二个让用户编辑表格。 我需要将它们组合起来,这样当用户编辑表格时,货币就会自动格式化。

问题是对于每个具有ID导入的单元格,只会触发一次更改事件,如果我尝试编辑多次未使用该格式的货币

那是我的HTML

$('#preview').editableTableWidget().tableFormat().find('tbody').focus();
$.fn.tableFormat = function () {        
    'use strict';
    var element = $(this)
    element.find('td').on('change', function () {
    if ($(this).is("#import")) {
            $(this).autoNumeric('init', {aSep: '.', aDec: ','});
            return;
        } 
    })
    return this;
};

那是我的jQuery

    private void showCustomDialog() {

    final Dialog dialog = new Dialog(SetupProfile.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.fragment_phonelist);

    Button done = (Button)dialog.findViewById(R.id.btn_done);
    Button canCel = (Button)dialog.findViewById(R.id.btn_cancel);
    ListView PhoneListView = (ListView)findViewById(R.id.list_phone);

   MyCustomAdapter tst = new MyCustomAdapter(this,ContactName,ContactNumb);
   PhoneListView.setAdapter(tst);

    done.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            dialog.dismiss();

        }
    });
    canCel.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            dialog.dismiss();
        }
    });

    dialog.show();
}

我也阅读了这些帖子:

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最佳解决方案,但它确实有效。 在使用“init”初始化autoNumeric之前,然后像这样“更新”:

$('#preview').editableTableWidget().tableFormat().find('tbody').focus();
$.fn.tableFormat = function () {        
    'use strict';
    var element = $(this)
    element.find('td').on('change', function () {
    $(this).autoNumeric('init', {aSep: '.', aDec: ','});
    if ($(this).is("#import")) {
            $(this).autoNumeric('update', {aSep: '.', aDec: ','});
            return;
        } 
    })
    return this;
};