Javascript 一个。(';单击';)单击后重置
我有这个jQuery代码。我在这里把第一行作为评论,因为它们在我的问题中并不重要,只是为了结构。我有点击事件,点击td后,我有一个文本输入字段。我在课文末尾设置焦点。但当我点击后,我想移除焦点,这样我就可以点击名称的中间位置,光标就会在那个里。当它是一个时,它就工作了。('click'),但我需要做多次,所以一次单击只工作一次Javascript 一个。(';单击';)单击后重置,javascript,jquery,Javascript,Jquery,我有这个jQuery代码。我在这里把第一行作为评论,因为它们在我的问题中并不重要,只是为了结构。我有点击事件,点击td后,我有一个文本输入字段。我在课文末尾设置焦点。但当我点击后,我想移除焦点,这样我就可以点击名称的中间位置,光标就会在那个里。当它是一个时,它就工作了。('click'),但我需要做多次,所以一次单击只工作一次 $('td').on('click', function() { //val = $(this).text(); //console.log(va
$('td').on('click', function() {
//val = $(this).text();
//console.log(val);
//rowid = $(this).parents('tr').attr('id');
//realclass = $(this).attr('class');
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("span").hide(); //hide td->span field..
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input").show();//..and show input field
//get focus on end of input val
SearchInput = $("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input");
strLength = SearchInput.val().length;
SearchInput.focus();
SearchInput[0].setSelectionRange(strLength, strLength);
});
问题是,单击输入本身也会触发包含的
元素上的单击事件(由于事件传播或“冒泡”),这是您不希望发生的。为防止在处理输入上的单击事件时调用事件.stopPropagation()
函数:
$('td').on('click', function() {
//val = $(this).text();
//console.log(val);
//rowid = $(this).parents('tr').attr('id');
//realclass = $(this).attr('class');
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("span").hide(); //hide td->span field..
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input").show();//..and show input field
//get focus on end of input val
SearchInput = $("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input");
strLength = SearchInput.val().length;
SearchInput.focus();
SearchInput[0].setSelectionRange(strLength, strLength);
});
$('td input').on('click', function(e) {
e.stopPropagation();
});
您可以设置一个JSFIDLE来重现这一点吗?当然
$(“tr”).filter(“#”+rowid)
可以是$(“#”+rowid)
是。我也错过了这一点。这是有效的,除非OP在第一次点击输入时也希望有这种行为,但我想情况并非如此。