人!
让我们假设以下代码:
$(document).ready(function() {
var data = 'clients=&categories=&keywords=&limit='+limit;
$.ajax({
type: 'POST',
url: 'index.php?ind=work&op=get_list',
data: data,
success: function (data) {
$('.list').html(data);
$('.thumb').click(function() {
var idz = 'id='+$(this).attr('id');
$.ajax({
type: 'POST',
url: 'index.php?ind=work&op=get_work',
data: idz,
success: function (data) {
$('.client').click(function() {
$('#clients').val($('.client').text());
});
}
});
});
}
});
});
$(document).ready(function() {
$('input').on('change', function(){
var clients = $('#clients').val(),
data = 'clients='+clients;
$.ajax({
type: 'POST',
url: 'index.php?ind=work&op=get_list',
data: data,
success: function (data) { $('.list').html(data);
$('.thumb').click(function() {
var idz = 'id='+$(this).attr('id');
$.ajax({
type: 'POST',
url: 'index.php?ind=work&op=get_work',
data: idz,
success: function (data) {
$('.work').hide().html(data).slideToggle('slow');
}
});
});
}
});
});
});
在页面的某处有一个输入和一些图像:
<div class="work"></div>
<input type="text" id="clients" name="clients">
<div class="list">Some thumbnails that call index.php?ind=work&op=get_work</div>
现在,当我在输入中输入任何内容时,jquery会在更改时截获它并从get_list函数获取信息。它与.keyup(),. change(),. on(&#39; change&#39;)和.on(&#39; input&#39;)完美配合。
但是当我按下客户端名称(span = class#&#34; client&#34;)时,输入#clients会被更改,但列表不会被加载。
我有一种感觉,我想念一些基本的东西:))
感谢提示!
答案 0 :(得分:4)
如果要以编程方式更改TextBox的值,则更改事件不会触发。
通过使用更改()
手动触发事件来触发事件更改此代码
$('.client').click(function () {
$('#clients').val($('.client').text());
});
要
$('.client').click(function () {
$('#clients').val($('.client').text());
$('#clients').change();
});
答案 1 :(得分:1)
我的代码中没有<span class=client>
,但假设它在那里,您的错误是设置<input>
元素的值不会触发任何事件,甚至没有&#34;输入&#34;或者&#34;改变&#34;。这些仅由实际用户操作触发。尝试直接在您的点击处理程序中触发事件:
$('.client').click(function() {
$('#clients').val($('.client').text());
$('#clients').trigger('change'); // or whatever event you are listening for
});
或者,更简单地说:
$('.client').click(function() {
$('#clients').val($('.client').text()).trigger('change');
});
答案 2 :(得分:0)
我认为这是因为您在输入更改时注册了span事件...所以当文本点击跨度但未注册时文本会发生变化。
您在点击发生后注册了跨度点击...您可以通过点击一次跨度来验证这一点,然后再次点击。
最好的办法是在加载时注册所有事件,如果你想阻止事件动作,则使用布尔值。
喜欢:
var preventaction = true;
$("#btn1").click(function(){
If (! preventaction) { dostuf(); }
});