如何在循环中提取表单元素值?

时间:2013-11-27 17:29:44

标签: javascript jquery

我有一个表单元素列表,我想循环以获取值,所以如果有人在输入中键入他们的名字我想要他们的名字,如果他们从选择框中选择了一个选项,我希望不是数值但是字符串。所有这些值都需要输出为一个字符串。

这是我创建的循环,但是我不知道如何解决这个问题..

每个表单元素的名称都以credit _

开头

如果有人能指出我正确的方向,那将非常感激..

$(this).parent().parent().find('[name*=credit_]').each(function( index ){

});

我的HTML非常简单。

<div class="comp-row">
     <!-- a select -->
     <!-- an input -->
</div>

这是表单的一部分,还有很多其他表单字段,但我只关注“comp-row”中我操作了很多的字段。

我最终使用了:

$('.comp-row [name*="credit_"]:not([type=hidden])')
.each(function(index,elem)
{
    console.log($(this).text() != '' ? $(this).find('option:selected').text().trim() : $(this).val());
});
}

4 个答案:

答案 0 :(得分:1)

根据您希望的格式,您可以使用serialize()serializeArray()

例如,获取整个表格:

var data=$('#myForm').serialize()

对于特定的元素组:

$('[name*=credit_]').serializeArray()

serialize() API docs

serializeArray() API docs

答案 1 :(得分:1)

var result = '';
$(this).parent().parent().find('[name*=credit_]').each(function( index ){
    result += $(this).is("select") ? $(this).text() : $(this).val();
});

答案 2 :(得分:1)

您正在寻找$('select[name*="credit_"]>option:selected')选择器。

要阅读您的文本值,请发出.text()

将此与if($('input[name*="credit_"]').text() != '')评估相结合,结合如下:

var theName = $('input[name*="credit_"]').text() != '' 
   ? $('select[name*="credit_"]>option:selected').text() 
   : $('input[name*="credit_"]').text();

答案 3 :(得分:0)

迭代符合条件的所有元素(name*=credit_)。检查其类型并将值放在变量中。

HTML

<form>
    <input type="text" name="credit_a" value="1" />
    <input type="text" name="credit_b" value="2" />
    <input type="text" name="credit_c" value="3" />
    <select name="credit_d">
        <option value="kk">kk</option>
        <option value="jj" selected>jjjjj</option>
    </select>
    <input name="credit_e type="checkbox" checked value="imchecked" />
</form>

<form>
    <input type="text" name="credit_a" value="55" />
    <input type="text" name="credit_b" value="66" />
    <input type="text" name="credit_c" value="77" />
    <input type="text" name="credit_d" value="88" />
</form>

<p id="result"> </p>

的javascript

$(function() {
    var values = '';

    $('form [name*=credit_]').each(function() {
        var $this = $(this);

        if($this[0].tagName == 'TEXTAREA') {
            values += ' ' + $this.text();   
        } 
        else if ($this[0].tagName == 'SELECT') {
            values += ' ' + $this.find(':selected').text();
        }
        else {
            values += ' ' + $this.val();
        }   
    });

    $('#result').html(values);    
});

jsfiddle http://jsfiddle.net/5tgzr/2/