Javascript 如何使用jQuery动态获取输入值?
我正试图在我的编程风格中实现这一原则 为了避免对我上面的问题产生误解,我将在下面再次解释。我一直在寻找这个解决方案,但似乎找不到正确的解决方案 我希望动态获取表单中的每个输入值(不是动态输入,动态添加新输入等),而无需反复键入:Javascript 如何使用jQuery动态获取输入值?,javascript,jquery,html,Javascript,Jquery,Html,我正试图在我的编程风格中实现这一原则 为了避免对我上面的问题产生误解,我将在下面再次解释。我一直在寻找这个解决方案,但似乎找不到正确的解决方案 我希望动态获取表单中的每个输入值(不是动态输入,动态添加新输入等),而无需反复键入: var foo = $('input[name="foo"]').val(); var bar = $('input[name="bar"]').val(); 一两件就可以了。但问题是,当我有超过10个输入时,这将是不可接受的 我怎样才能做到这一点?var input
var foo = $('input[name="foo"]').val();
var bar = $('input[name="bar"]').val();
一两件就可以了。但问题是,当我有超过10个输入时,这将是不可接受的
我怎样才能做到这一点?var inputs={};
var inputs = {};
// This will fire no matter when the control has been added
$(document).on('keyup','input[name]'), function () {
inputs[$(this).attr('name')] = $(this).val();
});
// The results will be in at inputs.<name of control>, so a control with
// name="name1" will be found at inputs.name1.
//
// Also all the controls that have a name will be in the object when changed.
// This will only contain changed values and if you want to
// prime it initially, you will need to do this once the controls are all
// loaded.
$('input[name]').each(function() {
inputs[$(this).attr('name')] = $(this).val();
});
//无论何时添加控件,此操作都将触发
$(文档).on('keyup','input[name]')、函数(){
输入[$(this.attr('name')]=$(this.val();
});
//结果将显示在at输入中,因此使用
//name=“name1”将在inputs.name1中找到。
//
//此外,更改时,所有具有名称的控件都将位于对象中。
//这将只包含更改的值,如果您希望
//初始时,您需要在控件完成后执行此操作
//上膛了。
$('input[name]')。每个(函数(){
输入[$(this.attr('name')]=$(this.val();
});
var输入={};
//无论何时添加控件,此操作都将触发
$(文档).on('keyup','input[name]')、函数(){
输入[$(this.attr('name')]=$(this.val();
});
//结果将显示在at输入中,因此使用
//name=“name1”将在inputs.name1中找到。
//
//此外,更改时,所有具有名称的控件都将位于对象中。
//这将只包含更改的值,如果您希望
//初始时,您需要在控件完成后执行此操作
//上膛了。
$('input[name]')。每个(函数(){
输入[$(this.attr('name')]=$(this.val();
});
您可以使用每个
函数循环输入具有名称属性的并获取该值
var arr=[];
$(“:输入[名称]”)。每个(函数(索引,元素){
arr.push($(this.val());
});
控制台日志(arr)代码>
您可以使用每个
函数循环输入具有名称属性的并获取该值
var arr=[];
$(“:输入[名称]”)。每个(函数(索引,元素){
arr.push($(this.val());
});
控制台日志(arr)代码>
我认为这大概可以实现您想要的。假设您只需要文本值
var Inputs = [];
$(":input:text").each(function () {
Inputs.push({
Name: $(this).attr("name"),
Value: $(this).val()
});
});
我认为这应该大致达到你想要的效果。假设您只需要文本值
var Inputs = [];
$(":input:text").each(function () {
Inputs.push({
Name: $(this).attr("name"),
Value: $(this).val()
});
});
你是说你想用一个你可以调用的函数来代替它吗?还是在所有的字段中循环?如果是前者,您可以按照const getInputByName=(name)=>$(`input[name=${name}]`
)的思路来做一些事情,并通过执行var$foo=getInputByName(“foo”)来调用它代码>。如果你想要的结果对我来说更清楚一点,我会把它作为一个答案来提交。基本上,如果我真的创建了一个函数,这意味着我应该反复输入它的值。所以,我认为循环更好。。但我不知道怎么做。请您提交答案好吗?即使您将所有输入都放在一起,您如何在不使用标识符的情况下引用单个输入?还是硬编码?最后,如果您想要输入foo
的值,那么最终必须指定foo
。如果您只是尝试获取所有输入,或所有空输入,或所有填充输入,或所有文本输入,等等,那么这会更容易。但是你的问题没有意义。我们需要知道你打算对输入做什么。你是对的,我试图提交请求时遇到了问题。标识符没有设置。我忘了说我希望它作为ajax数据提交。你是说你想用一个可以调用的函数来代替它吗?还是在所有的字段中循环?如果是前者,您可以按照const getInputByName=(name)=>$(`input[name=${name}]`
)的思路来做一些事情,并通过执行var$foo=getInputByName(“foo”)来调用它代码>。如果你想要的结果对我来说更清楚一点,我会把它作为一个答案来提交。基本上,如果我真的创建了一个函数,这意味着我应该反复输入它的值。所以,我认为循环更好。。但我不知道怎么做。请您提交答案好吗?即使您将所有输入都放在一起,您如何在不使用标识符的情况下引用单个输入?还是硬编码?最后,如果您想要输入foo
的值,那么最终必须指定foo
。如果您只是尝试获取所有输入,或所有空输入,或所有填充输入,或所有文本输入,等等,那么这会更容易。但是你的问题没有意义。我们需要知道你打算对输入做什么。你是对的,我试图提交请求时遇到了问题。标识符没有设置。我忘了说我想把它作为ajax数据提交。好家伙~!但是如果我有一个表单上有textarea
或radio
或checkbox
元素,那该怎么办呢?我刚刚读了jQuery文档[link](),差点忘了它。非常感谢你!你的解决方案很好。但我面临着一个新问题,因为我想将它用作ajax数据,我只获取它的值,而不获取它的name属性/标识符。对不起(-question updated不,这不是怎么回事。如果你有新问题,问新问题。不要把以前的问题换成新问题。好吧,我明白。这是我的错,回滚~nice dude~!但是如果我有一个表单上面有textarea
或radio
或checkbox
元素,那该怎么办呢?好吧,我刚刚读了jQuery d文档[link]()差点忘了它。非常感谢!您的解决方案很棒。但我面临新的问题,因为我想将它用作ajax数据,我只得到它的值,而没有它的名称属性/标识符。