棘手的小jquery选择器1:遍历所有输入,并仅排除未检查的单选按钮

时间:2010-02-08 17:36:13

标签: jquery jquery-selectors radio-button

这是交易:为了构建一系列正确的参数,我试图遍历ajax构建表单中包含的所有输入; 这里的代码还没有完成,但我想你会理解它:

$("#formulaireUploadFichier").live('submit',function(e){
    var fm = $(this);
    var fld = [];
    $('input',fm).not('[type=submit]').each(function(){
        if ($(this"[type=radio]:checked"||$(this).not("[type=radio]"))
        var name= $(this).attr("name");
        var val= $(this).val();
        fld.push(name+'='+val);
    });
    //construct url (note : should really be encoded!)...
    var url = fm.attr('action')+'?'+fld.join('&');
    //open shadowbox...
    Shadowbox.open({
        player:"html",
        content:url,
        width:800,
        height:800
    });
    //prevent form submission...
    e.preventDefault();
}); 

发痒的部分来到第5行,我正在尝试为JQuery编写一个正确的选择器来传递未选中/选中的单选按钮。 我知道我离它不远,但是我搞砸了,所以任何帮助清除这个帮助都会非常感激。

5 个答案:

答案 0 :(得分:3)

由于您已经处于输入元素的循环中,因此无需启动另一个元素。只需测试每个项目上的正确过滤器。

if($(this).is(":radio:checked,:not(:radio)")) {
        var name= $(this).attr("name");
        var val= $(this).val();
        fld.push(name+'='+val);
}

jQuery的is()函数允许您将元素与作为参数传递的选择器进行比较。

答案 1 :(得分:0)

你搞砸了$(this"[type

附近的东西

编辑:

var inps=$('input');
var whatYouWant = inps.filter('[type!=radio]').add(inps.filter('[type=radio]:checked'));

这样它应该做你想要的事情

答案 2 :(得分:0)

您想要选择什么:

  • 只需选中了单选按钮,或
  • 所有选中的单选按钮和复选框?

仅检查单选按钮的代码:

if($(this).is(":radio:checked")) {

所有选中输入的代码(复选框和单选按钮):

if($(this).is(":radio:checked, :not(:radio):checked")) {

我希望这就是你所追求的目标。

答案 3 :(得分:-1)

你在这里有什么预期的结果?

    $('input',fm).not('[type=submit]').each(function(){
    if ($(this"[type=radio]:checked"||$(this).not("[type=radio]"))
    var name= $(this).attr("name");
    var val= $(this).val();
    fld.push(name+'='+val);
     });

我在这里看到的是,如果检查了收音机,你想要下面的条件。你错过了{}围绕代码,你所做的就是在满足条件时设置var名称。你的意思是让它运行所有代码吗?像这样?

    $('input',fm).not('[type=submit]').each(function(){
if ($(this"[type=radio]:checked"||$(this).not("[type=radio]")){
var name= $(this).attr("name");
var val= $(this).val();
fld.push(name+'='+val);
}

 });

答案 4 :(得分:-2)

我建议将if ($(this"[type=radio]:checked"||$(this).not("[type=radio]"))替换为if($(this).attr('type') !== 'radio' || $(this).val()=='on')