1

我有 5 个文本框用于 [标题、名称、关键字、描述和 URL] 输入

$("#TxtPageTitle").keyup(function () {
  $("#TxtPageName").val($(this).val());
  $("#TxtPageKeywords").val($(this).val());
  $("#TxtPageDescription").val($(this).val());
  $("#TxtPageURL").val($(this).val());
});

我正在使用 JQuery 的 Keyup 事件来处理复制,当我在标题(文本框)中输入内容时,它将被填充到所有其他 4 个文本框中。

问题是:我将首先在标题(文本框)中输入一些内容,然后它将填充所有其他文本框,然后我将编辑所有 4 个文本框的值。如果再次更改值标题(文本框),那么所有其他 4 个文本框的旧值将被更改。

我想要的是 Keyup 方法应该只适用于第一次进入。所以我可以防止这个问题。

4

3 回答 3

4

一种方法是给要自动填充的字段一个特定的类,比如“autoFill”,然后在修改它们时从各个字段中删除该类,例如:

$("#TxtPageTitle").keyup(function () {
    $(".autoFill").val(this.value);
});

$(".autoFill").change(function() {
    $(this).removeClass("autoFill");
});​​​​​​​​

演示:http: //jsfiddle.net/A2FsY/

您说的是“第一次进入”,但我的建议比这更好,因为它将继续将 #TxtPageTitle 的更改应用于尚未单独编辑的任何其他字段。如果您真的希望它只是“第一次进入”,那么按照 Blade0rz 的回答将一个.blur()或处理程序添加到#TxtPageTitle。.change()

编辑:请注意,无需在不再具有“autoFill”类的字段上继续触发更改事件,因此上述更改处理程序的主体可以更改为:

$(this).removeClass("autoFill").unbind("change");
于 2012-03-29T10:22:24.807 回答
2

每次在文本框中键入 1 个字符时,都会触发 keyup 事件。没有办法知道第一次编辑有多少字符。您可以为文本框中的字符数确定一个固定值,然后取消绑定 keyup 事件,或者添加一个命令让用户“告诉”他何时停止输入,然后取消绑定该事件。要取消绑定事件,请参阅:jQuery unbind

于 2012-03-29T10:22:08.750 回答
0

当页面标题文本框失去焦点时,您可以取消绑定 keyup 处理程序。这主要表明用户已经完成:

$("#TxtPageTitle").keyup(function () {
  $("#TxtPageName").val($(this).val());
  $("#TxtPageKeywords").val($(this).val());
  $("#TxtPageDescription").val($(this).val());
  $("#TxtPageURL").val($(this).val());
}).blur(function() {
  $(this).unbind("keyup");
});
于 2012-03-29T10:24:29.567 回答