JQUERY / JAVASCRIPT - 从.find命令中获取多个值

时间:2012-08-01 11:17:48

标签: javascript jquery ajax jquery-ui

我有一个带有表单的JSP页面。当我提交表单时,它会构建并生成一个JSON字符串,我使用。

执行AJAX帖子

我有一个问题,我需要从表单中获取多个值,并且我使用以下内容来执行此操作:

 .find('input[name=item1])
 .not('input[type=hidden]')  

如何获取名称为item1,item2和item3的输入?

我尝试了这个,但它不起作用?

 .find('input[name=item1][name=item2][name=item3]')

以下是我的代码:

    // Create JSON based data object
    $.fn.serializeObject = function()
    {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });

        return o;
    };

    // Form Submission
    $('#form').submit( function() {

        // Create data array, used for building request message
        var data = {
            request: { 
                requestType: "request",
                fields: [ { 
                    itemX1 : '1',
                    itemX2 : '2',
                    itemX3 : '3'
                } ] 
            }
        };  

        // Create field array based variables for request message
        var fields = {
            fields: [ { 
                itemX1 : null,
                itemX2 : null,
                itemX3 : null
            } ] 
        };              

        // Get reqired data from the form submitted
        fields = $('#form')
        //.find('input')
        .find('input[name=lmBtId][name=my]')  
        .not('input[type=hidden]')    
        .serializeObject();

        // Set the field array variables with data
        fields.itemX1 = '1';
        fields.itemX2 = '2';
        fields.itemX3 = '3';

        // Update data array with newly updated field array
        data.request.fields = [fields];
        var finalData = JSON.stringify(data);

3 个答案:

答案 0 :(得分:2)

你可以试试这个

.find('input[name^=item]');

它将选择名称以item开头的所有输入。

如果包含任何内容,您可以使用

获取属性值
.find('selector[propname*=containingvalue']);

如果想选择以

结尾的值
.find('selector[propname$=endwith']);

答案 1 :(得分:2)

$('input[name="test"], input[name="test2"]').each(function() {
    alert(this.value);
});​

这是JSFIDDLE

答案 2 :(得分:2)

此页面将提供有关选择器的信息,

http://api.jquery.com/multiple-selector/

请试试这个

.find('input[name=item1],[name=item2],[name=item3]')

为每个人添加一些东西,

.each(function(){
//code here
});