Javascript jquery:使用jquery更改输入值不会';不要影响输入拦截器

Javascript jquery:使用jquery更改输入值不会';不要影响输入拦截器,javascript,jquery,Javascript,Jquery,伙计们 让我们假设以下代码: $(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) {

伙计们

让我们假设以下代码:

    $(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>

一些调用index.php?ind=work&op=get\u work的缩略图
现在,当我在输入中键入任何内容时,jquery会在更改时截取它,并从get_list函数获取信息。它与.keyup()、.change()、.on('change')和.on('input')完美配合

但是,当我按下客户机名称(span with class=“client”)时,输入的#clients会更改,但列表不会加载

我觉得我错过了一些非常基本的东西:))


谢谢你的提示

如果以编程方式更改文本框的值,则不会触发更改事件

要触发事件,您必须使用change()手动触发事件

更改此代码

 $('.client').click(function () {
     $('#clients').val($('.client').text());
 });


如果以编程方式更改文本框的值,则不会触发更改事件

要触发事件,您必须使用change()手动触发事件

更改此代码

 $('.client').click(function () {
     $('#clients').val($('.client').text());
 });

我在您的代码中没有看到任何
,但假设它存在,您的错误是设置
元素的值不会触发任何事件,甚至不会触发“输入”或“更改”。这些仅由实际用户操作触发。尝试在单击处理程序中直接触发事件:

$('.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');
});
我在您的代码中没有看到任何
,但假设它存在,您的错误是设置
元素的值不会触发任何事件,甚至不会触发“输入”或“更改”。这些仅由实际用户操作触发。尝试在单击处理程序中直接触发事件:

$('.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');
});

我认为这是因为当输入更改时,您注册了span事件。。。因此,文本在单击跨度时会发生变化,但未注册

您可以在单击发生后注册跨度单击。。。您可以通过在跨度上单击一次,然后再次单击来验证这一点

最好的方法是注册加载上的所有事件,如果不想阻止事件操作,则使用布尔值

比如:

var preventaction = true;
$("#btn1").click(function(){
If (! preventaction) { dostuf(); }
});

我认为这是因为当输入更改时,您注册了span事件。。。因此,文本在单击跨度时会发生变化,但未注册

您可以在单击发生后注册跨度单击。。。您可以通过在跨度上单击一次,然后再次单击来验证这一点

最好的方法是注册加载上的所有事件,如果不想阻止事件操作,则使用布尔值

比如:

var preventaction = true;
$("#btn1").click(function(){
If (! preventaction) { dostuf(); }
});

请共享小提琴。您必须手动触发更改事件请共享小提琴。您必须手动触发更改事件