在提交时选择所有输入的每个值

时间:2012-02-24 16:30:59

标签: javascript jquery

单击提交按钮时,我尝试使用类'netSuiteValue'选择每个输入值。以下是我到目前为止的情况:

$('.netSuiteValue').each(function() {
    var inputValue = $(this).val();
    $('.submitBtn').click(function() {
        $('.theValue').val('all values' + inputValue);
    });
});​

http://jsfiddle.net/qLPw9/1/

我无法弄清楚它为什么不起作用。

9 个答案:

答案 0 :(得分:1)

您正在覆盖循环中的值,而不是构建字符串。

$('.netSuiteValue').each(function() {
    var inputValue = $(this).val();    <--- declare var outside of loop and add to string instead
    $('.submitBtn').click(function() {
        $('.theValue').val('all values' + inputValue);
    });
});​

答案 1 :(得分:1)

你的方式错了。首先绑定提交按钮的click事件,然后收集您的数据:

$('.submitBtn').click(function() {
    var inputValue;

    $('.netSuiteValue').each(function() {
        inputValue += $(this).val();
    });

    $('.theValue').val('all values' + inputValue);
});​

这是a working fiddle

答案 2 :(得分:1)

一些事情:

  • 您的表单应包含在<form>标记
  • 我会将事件附加到表单提交而不是提交按钮点击,因为您也可以使用键盘提交表单
  • 您的表单输入应该都有唯一的名称

所以这是我给出上述解决方案的解决方案:

$('#fieldForm').submit(function(ev) {
    ev.preventDefault();
    var allVals = {};
    $(this).find('input.netSuiteValue').each(function(i, el){
        allVals[this.name] = this.value;
    });
    $('.theValue').val('All values: ' + JSON.stringify(allVals));
});​

See demo

答案 3 :(得分:0)

这将为您提供所有这些输入的名称/值对,通过html提交表单会给出。

var values = $('input.netSuiteValue').serialize();

答案 4 :(得分:0)

我认为这就是你要找的东西:

$('.submitBtn').on('click',function(){
    $('.netSuiteValue').each(function(){
        alert($(this).val());
    });
})​​​​​​​​​​​​​;​

这是jsfiddle:http://jsfiddle.net/remibreton/2A6mW/

答案 5 :(得分:0)

因为你有提交函数之外的循环。它需要在提交函数内。

答案 6 :(得分:0)

$('.submitBtn').click(function() {
  var fields = $('.netSuiteValue');
  var values = fields.serialize();
  $('.theValue').val('all values' + values);
});
​

答案 7 :(得分:0)

正如我所理解的,使用原始代码的问题是,您正在遍历元素,并且在每次迭代时,使用较新的值覆盖变量。并在该循环中分配click事件处理程序(这是相当昂贵的,因为在每次迭代时,您(重新)创建一个事件处理程序/函数。

我假设您想要迭代并检索输入元素的值以响应单击按钮。所以,试着改为:

// in response to clicking the submit button
$('.submitBtn').click(
    function(){
        // creates variable as an array
        var inputValues = [];
        // iterates through each element returned by the selector
        $('.netSuiteValue').each(
            function(){
                // adds the value of each of those elements to the array
                inputValues.push($(this).val());
            });
        // assigns the value of the .theValue element, and joins the array elements together with commas
        $('.theValue').val('All values: ' + inputValues.join(', '));
    });

JS Fiddle demo

参考文献:

答案 8 :(得分:0)

我的目标是在另一个输入中显示所有输入的值然后可能有效:

$('.submitBtn').click(function() {
    var values = $('.netSuiteValue').map(function(i, e) { 
        return $(e).val(); 
    }).get().join(', ');
    $('.theValue').val('all values: ' + values);
});

请参阅demo