我有[标题,名称,关键字,描述和网址]输入的5个文本框
$("#TxtPageTitle").keyup(function () {
$("#TxtPageName").val($(this).val());
$("#TxtPageKeywords").val($(this).val());
$("#TxtPageDescription").val($(this).val());
$("#TxtPageURL").val($(this).val());
});
我正在使用JQuery的Keyup事件来处理复制,当我在Title(文本框)中输入内容时,它将被填充所有其他4个文本框。
问题是:我首先在标题(文本框)中输入内容,然后填入所有其他文本框,稍后我将编辑所有4个文本框的值。再次,如果更改值Title(文本框),则将更改所有其他4个文本框的旧值。
我想要的是Keyup方法应该只适用于第一次输入。所以我可以防止这个问题。
答案 0 :(得分:4)
一种方法是给你想要自动填充特定类的字段,例如“autoFill”,然后在修改它们时从各个字段中删除该类,例如:
$("#TxtPageTitle").keyup(function () {
$(".autoFill").val(this.value);
});
$(".autoFill").change(function() {
$(this).removeClass("autoFill");
});
你说“在第一次进入”时,但我建议的更好一点,因为它会继续将#TxtPageTitle的更改应用到尚未单独编辑的任何其他字段。如果你真的希望它是“第一次进入”,那么根据Blade0rz的答案,将#{1}}或.blur()
处理程序添加到#TxtPageTitle。
编辑:请注意,不需要在不再具有“autoFill”类的字段上继续触发change事件,因此上面的更改处理程序的主体可以更改为:
.change()
答案 1 :(得分:2)
每次在文本框中键入1个字符时,都会触发keyup事件。没有办法告诉第一次编辑有多少字符。您可以为文本框中的字符数决定固定值,之后键盘事件将被取消绑定,或者为用户添加命令以“告诉”他何时停止键入,然后取消绑定事件。要取消绑定事件,请参阅:jQuery unbind
答案 2 :(得分:0)
当页面标题文本框失去焦点时,您可以取消绑定键盘处理程序。这通常表明用户已完成:
$("#TxtPageTitle").keyup(function () {
$("#TxtPageName").val($(this).val());
$("#TxtPageKeywords").val($(this).val());
$("#TxtPageDescription").val($(this).val());
$("#TxtPageURL").val($(this).val());
}).blur(function() {
$(this).unbind("keyup");
});