jQuery定义函数未选择

时间:2019-04-08 07:39:56

标签: javascript jquery html

升级到jquery 3.1.1后我刚遇到一个错误

管理员可以单击“编辑用户”按钮,该按钮将启动模式并传播具有从数据库中获取的用户数据的输入字段。输入字段选择器在第一个功能中。

data.email.val(result.email);或更确切地说users.add_edit_data.email.val(result.email)不会更改ID为email的字段的值。没有控制台错误。结果已正确获取,我可以通过console.log(result.email)进行记录。通过$('#email').val(result.email);直接分配值可以正常工作。我不确定该代码在升级之前是否可以正常工作,希望朝正确的方向前进。不太确定如何从现在开始调试它。

/**
 * Helps match input fields with values and general assignments
 */
users.add_edit_data = {
    username: $('#username'),
    email: $('#email'),
    first_name: $('#first_name'),
    last_name: $('#last_name'),
    address: $('#address'),
    phone: $('#phone'),
    password: $('#password'),
    fb_id: $('#fb_id'),
    country: $('#country'),
    city: $('#city'),
    confirm_password: $('#confirm_password'),
    button: $('#btn-add-user')
};

/**
 * Gets user details and propogates it in the input fields
 * 
 * @param {int} user_id
 */
users.edit_user = function (user_id) {
    $('#user-id').val(user_id);
    var modal = $('#modal-add-edit-user');
    var data = users.add_edit_data;
    var modal_title = modal.find('.modal-title');
    var modal_body = modal.find('.m-body');
    var ajax_loading = modal.find('.ajax-loading');
    //data.button.attr('onclick', 'users.update_user();');
    neou_cms.remove_error_messages();
    modal.modal('show');
    modal_title.text($_lang.processing_loading);
    modal_body.hide();
    ajax_loading.show();
    console.log(users.add_edit_data.username);
    $.ajax({
        type: 'POST',
        url: base_path + 'access_control/get_user_details',
        dataType: 'json',
        data: {
            user_id: user_id
        },
        success: function (result) {
            if (result.status === 'error') {
                toastr.error(result.msg);
                modal.modal('hide');
            } else {
                data.email.val(result.email);
                data.username.val(result.username);
                data.first_name.val(result.first_name);
                data.last_name.val(result.last_name);
                data.address.val(result.address);
                data.phone.val(result.phone);
                data.fb_id.val(result.fb_id);
                data.country.val(result.country);
                data.city.val(result.city);
                data.password.attr('placeholder', $_lang.validation_leave_blank);
                data.confirm_password.attr('placeholder', $_lang.validation_leave_blank);
                data.button.text($_lang.actions_update);
                modal_title.text(result.username);
            }
            ajax_loading.hide();
            modal_body.show();
        }
    });
};

在开发工具中,键入users.add_edit_data.username.val('12312');会产生r.fn.init {},我100%确定ID用户名为id的输入存在并且是唯一的。我有一个旧的网站工作副本,带有一个较旧的jquery版本,并输入与上面相同的内容,生成r.fn.init [input#username.form-control]并更改了值。

编辑:脚本被加载到错误的区域(顶部而不是底部)。由于无法删除而投票关闭。

2 个答案:

答案 0 :(得分:3)

因为您需要访问stmt.defs.username.val-您忘记了defs

var stmt = {};

stmt.defs = {
  username: $('#hw')
};

stmt.defs.username.val('hello world'); 
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<input type="input" id="hw" name="hw">

答案 1 :(得分:1)

您的对象return arrSelectedIndex.contains(section) ? (arrDataSource[section] as AnyObject).count : 0 如下:

stmt

因此,您可以使用以下方式更改username属性的值: stmt = { defs: { username: $('#hw') } }

如果您想更新stmt.defs.username = 'Hello world';元素的值,请使用input