引用我按回车键时所在的文本字段
Reference the text field that I'm in when I press enter
Javascript/jQuery(不符合我的要求):
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("value", "wow such code");
};
};
我不想按名称引用文本字段,因为我将在页面上有多个使用相同 chkKey 函数的不同名称的文本字段。无论名称如何,我都需要引用我当前所在的文本字段。这可能吗?我认为这是一个 parent/bubbling 问题,但我完全没有这方面的经验。
编辑:完成HTML/JS:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Boxes and Lines</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<div id="outerDiv">
<input type="button" name="btnNewField" value="Add New Field" onclick="appendNewField()">
<p></p>
<div id="mainDiv"></div>
</div>
<script>
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("value", "wow");
};
};
// returns a text field object
function txtField(fieldName, fieldVal){
var objTxtField = document.createElement("input");
$(objTxtField).attr({
type: "text",
name: fieldName,
value: fieldVal,
onkeyup: "chkKey(event)"
});
return objTxtField;
};
// if there is no appended text field, create one and give it focus
function appendNewField() {
if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
$(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
};
};
</script>
</body>
</html>
您的代码中有两个错误:
- 像
attr
或 prop
一样使用 val
,但它只需要一个参数
- 尝试使用
attr
添加 keyup
事件处理程序,您应该使用 on
看看下面的代码,用上面的项目修复:
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("wow such code");
};
};
// returns a text field object
function txtField(fieldName, fieldVal){
var objTxtField = document.createElement("input");
$(objTxtField).attr({
type: "text",
name: fieldName,
value: fieldVal
}).on('keyup', chkKey);
return objTxtField;
};
// if there is no appended text field, create one and give it focus
function appendNewField() {
if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
$(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
};
};
appendNewField()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="mainDiv"></div>
onkeyup: "chkKey(event, this)"
将当前元素传递给函数。
Javascript/jQuery(不符合我的要求):
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("value", "wow such code");
};
};
我不想按名称引用文本字段,因为我将在页面上有多个使用相同 chkKey 函数的不同名称的文本字段。无论名称如何,我都需要引用我当前所在的文本字段。这可能吗?我认为这是一个 parent/bubbling 问题,但我完全没有这方面的经验。
编辑:完成HTML/JS:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Boxes and Lines</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<div id="outerDiv">
<input type="button" name="btnNewField" value="Add New Field" onclick="appendNewField()">
<p></p>
<div id="mainDiv"></div>
</div>
<script>
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("value", "wow");
};
};
// returns a text field object
function txtField(fieldName, fieldVal){
var objTxtField = document.createElement("input");
$(objTxtField).attr({
type: "text",
name: fieldName,
value: fieldVal,
onkeyup: "chkKey(event)"
});
return objTxtField;
};
// if there is no appended text field, create one and give it focus
function appendNewField() {
if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
$(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
};
};
</script>
</body>
</html>
您的代码中有两个错误:
- 像
attr
或prop
一样使用val
,但它只需要一个参数 - 尝试使用
attr
添加keyup
事件处理程序,您应该使用on
看看下面的代码,用上面的项目修复:
function chkKey(event) {
if (event.keyCode == 13) {
$(this).val("wow such code");
};
};
// returns a text field object
function txtField(fieldName, fieldVal){
var objTxtField = document.createElement("input");
$(objTxtField).attr({
type: "text",
name: fieldName,
value: fieldVal
}).on('keyup', chkKey);
return objTxtField;
};
// if there is no appended text field, create one and give it focus
function appendNewField() {
if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
$(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
};
};
appendNewField()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="mainDiv"></div>
onkeyup: "chkKey(event, this)"
将当前元素传递给函数。