2010-02-08 2 views
0

올바른 거래를 만들기 위해 빌드 된 아약스에 포함 된 모든 입력을 반복하려고합니다. 형태; 여기 아래에 코드가 완료, 아직 당신이 그것을 이해할 것 같아요되지 않습니다까다로운 작은 jquery selector 하나 : 모든 입력을 반복하고 선택하지 않은 라디오 버튼 만 제외

$("#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(); 
}); 

가려운 부분은 내가 JQuery와 비 검사를 통해 전달을 위해 올바른 선택을 쓰기 위해 노력하고있어 5 호선, 제공/선택 라디오 버튼. 나는 그다지 멀지 않다는 것을 알고 있지만, 나는 엉망이되어 가고있다. 그래서이 도움을 제거하는 어떤 도움도 크게 감사 할 것이다.

답변

3

에 의해 if ($(this"[type=radio]:checked"||$(this).not("[type=radio]"))를 교체하는 것이 좋습니다 것, 필요가 또 다른 시작 없습니다. 각 항목에 적절한 필터가 있는지 테스트하십시오.

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

jQuery의 기능 당신이 매개 변수로 전달할 선택기에 요소를 비교할 수 있습니다()입니다.

+0

2 일 전에 jQuery를 시작 했으므로 잘못된 것일 수 있습니다.하지만 체크하지 않은 모든 라디오 버튼을 선택했다고 생각합니다. 사용자가 체크하지 않은 라디오 버튼을 제외하고 모든 입력을 선택하려고합니다. – Justen

+0

사용자가 이미 입력을 반복하고 있습니다. jQuery의'is()'함수를 사용하면 요소를 테스트하여 주어진 선택자와 일치하는지 확인할 수 있습니다. true 또는 false를 반환합니다. – user113716

+0

아, 이제 그것을 보니 알았어. 선택된 라디오 단추를 선택한 다음 라디오 단추를 선택하십시오. – Justen

0

당신은 근처에 뭔가를 엉망으로 한 $(this"[type

편집 :

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

당신은

+0

이것은 작동하지 않습니다. 확인되지 않은 라디오 컬렉션을 반환합니다. 그것은 (그의 모범에 따르면) 그가 원하는 것입니다. – user113716

+0

좋아, 이제 나쁘다는 것을 알지만 다음 번에 끝나지 마라 "이게 그가 원하는거야"라고하는 너의 부정적인 의견;) 나는 답을 고치고있다 – naugtur

+0

죄송합니다. 그가 원하는 것을 말하는 것이 아닙니다. 수정 해줘서 고마워. 희망은 너무 부정적이 아니 었습니다. 나를 똑바로 세워 줘서 +1 해줘! – user113716

-1

를 원 무엇을 어떻게해야 이런 식으로 당신의 예상 resutls 여기에 무엇입니까?

$('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); 
} 

}); 
+0

흥미 롭군 이것은 흥미 진진했지만 아직 코드는 원본 포스터가 게시 한 것을 토대로 그 이름 변수를 분명히 설정하지 않을 것입니다. –

+0

누구에게 지시가 있습니까?당신은 당신 자신의 대답에 대해 논평했습니다. – user113716

-2

나는 당신이 당신의 입력 요소의 루프에서 이미있어 이후 if($(this).attr('type') !== 'radio' || $(this).val()=='on')

0

정확히 어떤 선택하려는 수행

  • 그냥 확인 라디오 버튼, 또는
  • 모든 검사 라디오 버튼과 체크 박스? 단지 선택 라디오 버튼에 대한

코드 :

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

내가이 필요하시면 희망 : 모든

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

코드 입력 (체크 박스와 라디오 버튼)을 확인.