jquery:用jquery更改输入val;t影响输入拦截器
jquery: changing input val with jquery doesn't affect the input interceptor
伙计们!
让我们假设以下代码:
$(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('change'(和.on('input'(完美配合。
但是,当我按下客户端名称(span with class="client"(时,输入的#client会发生更改,但列表不会加载。
我有一种感觉,我错过了一些非常基本的东西:(
谢谢你的提示!
如果您正在用程序更改TextBox的值,那么更改事件不会触发。
要触发事件,您必须使用change((手动触发事件
更改此代码
$('.client').click(function () {
$('#clients').val($('.client').text());
});
至
$('.client').click(function () {
$('#clients').val($('.client').text());
$('#clients').change();
});
我在您的代码中没有看到任何<span class=client>
,但假设它在那里,您的错误是设置<input>
元素的值不会触发任何事件,甚至不会触发"input"或"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事件。。。因此,当它点击跨度时,文本会发生变化,但没有注册。
您在点击发生后注册跨度点击。。。您可以通过在span上单击一次,whait,然后再次单击来验证这一点。
最好的方法是在负载上注册所有事件,如果您想阻止事件操作,请使用布尔值。
类似:
var preventaction = true;
$("#btn1").click(function(){
If (! preventaction) { dostuf(); }
});
相关文章:
- 使用ajax的输入jquery意外结束
- 如何从输入 JQuery 或 javascript 中获取修改后的文本
- 从输入 jquery 获取值
- 如何将MP3文件播放到麦克风输入jQuery中
- 正在尝试预览表单输入jQuery
- 如何启用由日期选择器 ui 附加的输入?(JQuery 插件)
- 检测用户是否没有't输入任何内容/删除输入jQuery
- 删除输入jquery中的值时清除所有更改
- 在编辑输入 jQuery 后激活只读返回
- 验证并附加电话输入 Jquery
- 如果相同的单词在输入 jquery 或 js 中写入两次,则发出警报并不允许
- 如何附加用户输入?jQuery.
- 使用 .val() 的输入 jQuery 进行计算
- 对所有子输入JQuery使用replaceWith
- Vaildate动态添加数组输入-jQuery Validate
- 文件输入jQuery更改事件只触发一次
- 正确重命名克隆的输入JQuery
- 检查输入Jquery的起始字符的值
- 动态添加输入jquery
- 在鼠标输入jquery中使用延迟