【发布时间】:2017-04-11 18:47:33
【问题描述】:
我制作了一个小脚本,将一些'a'标签附加到'div',以使用户能够从固定列表中选择正确的值(选项太多,所以选项会在用户使用后出现写 3 个字母或更多)。
我有一个隐藏字段,它使用用户从列表中选择的 ID 进行更新。
我正在使用 jQuery 添加一个 onclick 事件。
我的问题是 Vue 不知道 jQuery 为隐藏字段设置的值,我不知道如何修复它。
代码如下:
$('#form_product').on("click", ".choiceOptions a-participant", function (e) {
var id = $(this).data("id"),
participant = $(this).data("participant"),
inputId = $(this).data("visualcontainer"),
$visualInput = $('#' + inputId);
// Set values for the shown input and the hidden input
$visualInput.siblings('input').val(id);
$visualInput.val(participant);
// Stop showing the participants
$visualInput.siblings('div').css('display', 'none');
})
vm = Vue.component('input-participant', {
template: '#input_participant',
props: ['id', 'label', 'value', 'maxlength', 'required', 'readonly'],
methods: {
findParticipants: function (visualId) {
var visualContainer = $('#' + visualId);
var value = visualContainer.val();
var list = visualContainer.siblings('div');
if (value.length > 0 && value.length < 3) {
list.html('<div>Keep typing...</div>');
this.toggleParticipants(true, visualId);
}
else if (value.length > 2) {
this.toggleParticipants(true, visualId);
list.html('<div>Loading...</div>');
this.$http.get(hazaar.url('api', 'participantLookup') + '?name=' + value
).then(function (response) {
list.html('');
$.each(response.data, function (key, value) {
list.append('<a-participant data-id="' + value.data.id + '" data-participant="' + value.data.participantName + '" data-visualcontainer="' + visualId + '">' + value.data.participantName + '</a-participant>');
});
});
}
else {
this.toggleParticipants(false, visualId);
}
},
toggleParticipants: function (doShow, visualId) {
var $visualInputOptionsContainer = $('#' + visualId).siblings('div');
if (doShow) {
if ($('#' + visualId).val().length > 0) {
$visualInputOptionsContainer.css('display', 'block');
}
}
else {
// A bit of a hacky way to do it, but it seems to work fine so far.
window.setTimeout(function () {
$visualInputOptionsContainer.css('display', 'none');
}, 150);
}
}
}
});
【问题讨论】:
-
你可以用 vue 再试一次,目前这只是在 jQuery 中添加一些 vue,与单独的 jQuery 相比,它没有给你带来任何好处...尝试阅读 guide 的一些章节,这太棒了。
标签: javascript jquery jquery-ui vue.js