在使用jquery将值从一个输入传递到另一个输入时遇到麻烦
Having trouble passing a value from one input to another with jquery
我正在做一个新手项目,做一个简单的"待办事项清单",我被一些看起来很简单的事情卡住了!我试着把main从#myInput传到上传到下一个,以此类推。现在,如果你输入一些东西,然后点击添加,它首先会因为某种原因创建一个空白的新行,然后如果你输入其他东西,点击添加,你之前输入的东西会显示在下一行。只要你在输入中输入不同的东西,它就会一直这样做,但如果你在输入中输入相同的东西,连续点击几次add,什么都不会显示。然后再次将输入更改为不同的内容,并单击添加,所有这些都会显示lol,但仍然没有从您输入的当前行输出…坚果。有什么好的建议吗?我留下了一个JSfiddle链接,看看下面到底发生了什么。
<div>
<form id="addThings" type="text">
<input type="text" id="myInput" placeholder="add to your to-do list" size="50" maxlength="40" autocomplete="off" autofocus>
<input type="button" id="addButton" value="add">
</form>
</div>
另外,当你点击按钮时,它会在下面创建一个新行,它会把周围的一切都移动一点。试着把它弄光滑一点。谢谢!
$(function() {
var i = 2;
$('#addButton').click(function(e) {
var input = $('#myInput').val();
console.log(input);
var id = "newLine" + i;
var line = '<input type='"text'" id='"' + id + ''" size='"50'" disabled><input type='"checkbox'" >';
$('form').append(line);
var newId = "#" + id;
$('#myInput').change(function() {
$(newId).val(input);
});
i += 1;
});
});
JSFiddle
试试这个。在附加输入字段之前为其提供一个值效果很好。在你的情况下,有一个问题与javascript闭包。要解决这个问题,只需在click
函数之外定义输入变量
$(function() {
var i = 2;
$('#addButton').click(function(e) {
var input = $('#myInput').val();
console.log(input);
var id = "newLine" + i;
var line = '<input type='"text'" id='"' + id + ''" value='"'+input+''" size='"50'" disabled><input type='"checkbox'" >';
console.log(line);
$('form').append(line);
i += 1;
});
});
JSFIDDLE
尝试在创建新行时将输入值赋给新输入的value属性:
$(function() {
var i = 2;
$('#addButton').click(function(e) {
var input = $('#myInput').val();
var id = "newLine" + i;
var line = '<input type='"text'" id='"' + id + ''" size='"50'" value="' + input + '" disabled><input type='"checkbox'">';
$('form').append(line);
var newId = "#" + id;
/*$('#myInput').change(function() {
$(newId).val(input);
});*/
i += 1;
});
});
body {
background-color: white;
}
div {
width: 750px;
margin: 0 auto;
margin-top: 200px;
margin-bottom: 0;
padding: 0;
}
form {
margin: 0 auto;
display: inline-block;
margin-bottom: 0px;
}
input {
padding: 10px 18px;
float: bottom;
}
input[type=text] {
border-left: white;
border-right: white;
border-top: white;
font-size: 20px;
i height: 21px;
text-align: center;
outline: none;
float: right;
background-color: white;
}
input[type=button] {
display: inline-block;
height: 25px border: 0;
margin: 0 auto;
font-size: 20px;
float: right;
}
input[type=checkbox] {
vertical-align: top;
width: 10%;
margin: 15px auto;
float: right;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<body>
<div>
<form id="addThings" type="text">
<input type="text" id="myInput" placeholder="add to your to-do list" size="50" maxlength="40" autocomplete="off" autofocus>
<input type="button" id="addButton" value="add">
</form>
</div>
</body>
这是一个闭包/作用域问题。变量input
在click
函数内。因此,它将不在change
函数的范围内。
将input
的声明移出click
函数
创建一个包装器函数
这样,所有需要的变量都在addButtonScopeFunc
的范围内,而且只有这里。
这些变量在全局作用域window.
和'#addButton'
事件函数的作用域中都不需要。
$(function() {
var addButtonScopeFunc = function (input, inputValChangeEl) {
var i = 2,
id = "newLine" + i,
newId = "#" + id,
line = '<input type='"text'" id='"' + id + ''" size='"50'" disabled><input type='"checkbox'" >';
console.log(input);
console.log(line);
$('form').append(line);
$(inputValChangeEl).change(function() {
$(newId).val(input);
});
i += 1;
};
$('#addButton').click(function(e) {
addButtonScopeFunc($('#myInput').val(), '#myInput');
});
});
再举一个例子,只是为了显示一些东西。
您可以在addButtonScopeFunc
之外的$(inputValChangeEl).change(...)
事件函数中"超出",在其自己的包装函数中处理input
值作为参数。
$(function() {
var addButtonScopeFunc = function (input, inputValChangeEl) {
/* ... */
$('form').append(line);
changeInputVal(inputValChangeEl, newId, input);
i += 1;
},
changeInputVal = function (el, id, input) {
$(el).change(function() {
$(id).val(input);
});
};
$('#addButton').click(function(e) {
addButtonScopeFunc($('#myInput').val(), '#myInput');
});
});
进一步阅读:Javascript作用域解释
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 用户在文本框中输入一个数字,并根据使用 PHP 输入的数字重定向到另一个网页
- 如何要求用户输入一个介于 1 和 50 之间的整数,然后小程序打印出一行这个星数
- Javascript提示和警报输入一个数字,它将循环,您将输入数字以获得它的平均值
- 如果使用jquery输入一个字段,则自动填充其他字段
- 一直要一个数字,直到输入一个偶数
- 需要用户输入一个随机数,然后提醒用户数字 ibnputted
- 以 jQuery 为中心的文本框在 Safari 中输入一个字符后失去焦点
- 如何将我的 Google 地图功能从自动查找我的位置更改为让我输入一个位置
- 如何让两个不同的输入(一个用于移动设备,一个用于桌面)修改同一变量
- 允许html输入框只输入一个完整的数字和精确的十进制.5
- 我怎样才能使我的表单输入不返回任何结果,当它输入一个空查询
- 用TypeScript输入一个约束字典
- 只有在用户输入一个字符后,AngularJS才会调用数据库
- 在javascript中输入一个正斜杠
- 如何使移动
- 如何确保用户在Javascript中输入一个有效的数字
- Rails 3 -设计'请输入一个电子邮件地址'弹出消息,即使禁用了validatable
- 在输入中输入一个值
- 输入一个返回的可观察对象