这是交易:为了构建一系列正确的参数,我试图遍历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编写一个正确的选择器来传递未选中/选中的单选按钮。 我知道我离它不远,但是我搞砸了,所以任何帮助清除这个帮助都会非常感激。
答案 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')