1

我有以下从 PHP 脚本动态生成的标记(意味着有可变编号复选框或输入字段)。

<div id="resCondition" class="col-lg-10">
    <div class="checkbox">
        <label>
            <input type="checkbox" value="apples">I want apples                   
        </label>
    </div>
    <div class="checkbox">
        <label>
            <input type="checkbox" value="pears">I want pears
        </label>
    </div>
    <div class="input-group">
        <span class="input-group-addon">I want</span>
        <input type="number" min="0" class="form-control" value="0">
        <span class="input-group-addon">forks</span>
    </div>
</div>

客观的

如何在单个字符串中获取所有选中的选项以及输入组值?例如,如果用户选中上面的两个框并在输入字段中输入 3。我返回的字符串将是apples + pears + 3 forks. 如果用户只选中第一个框,那么我只会得到apples.

尝试

我找到了将所有复选框加入字符串的代码

var selected = $('#resCondition input:checked').map(function(i,el){return el.val;}).get().join('+');

但我不确定如何获取 input:number 及其随附的文本。

4

4 回答 4

2

您可以检查输入的类型,如果类型是,number您可以将值与元素的下一个兄弟的 textContent 连接。请注意,您应该使用jQuery 对象的方法(而不是属性)value而不是 , val,这是一个 HTMLElement 对象。.val()el

$('#resCondition').find('input:checked, input[type=number]').map(function(i,el) {
     return   el.type === 'checkbox' 
            ? el.value 
            : el.value > 0 ? el.value + ' ' + $(el).next().text() : null; 
}).get().join(' + ');

http://jsfiddle.net/ekQ5f/

于 2013-10-03T04:21:10.017 回答
0

像这样的东西应该工作:

$( "#resCondition" ).find( "input:checked, input[type=number]" ).map(function() {
    return this.value;
}).get();
于 2013-10-03T04:21:53.293 回答
0

你应该得到所有的输入。然后检查是它的检查或值不为零。

试试这个 - 演示http://jsfiddle.net/chokchai/RnfMC/

var text = [];

$('#resCondition :input').each(function(){
    if($(this).is(':checked') || parseInt($(this).val()) > 0){
        text.push($(this).val())
    }
})

text = text.join(' ');

alert(text);
于 2013-10-03T04:27:09.637 回答
-1

你可以根据你的要求使用

var selected = new Array();
$('#checkboxes input:checked').each(function() {
    selected.push($(this).attr('name'));
});

或从http://api.jquery.com/checked-selector/获取帮助

于 2013-10-03T04:19:37.137 回答