2012-02-06 2 views
0

매우 간단한 입력을 통해 호텔 예약 옵션 (날짜, 숙박 일 수, 어린이 수 등)을 수집하고 출발일은 ui-datepicker입니다.jQuery를 선택하여 제출하십시오.

jQuery를 사용하여이 데이터를 수집 한 다음 숨겨진 (제 3 자) 형식의 옵션에 해당하는 'selected'속성을 설정합니다. 이것은 모두 잘되고 있으며 DOM 요소가 변경되는 것을 볼 수 있습니다. 즉, 숨겨진 양식의 'selected'옵션이 변경되고 있습니다.

는 마지막 형태는 jQuery를 통해 다시 제출 :

$("form[name=idForm]").submit(); 

문제는 : 값이 '옵션이있다'는 DOM에서 확인 '을 선택하더라도 그래도 제출 양식에 의해 인식되지 않습니다.

코드 : 그래서

$(".check").click(function(){ 
    $(".book_result").hide(); /* just to hide verification feedback*/ 
    var date  = $("#datepicker").val(); 
    var nights  = $("#book_nights").val(); 
    var adults = $("#book_adults").val(); 
    var children  = $("#book_children").val(); 
    var access_code  = $("#book_access_code").val(); 
    if (date=='no date selected'){ 
     //all the code for verifying the users' input... 
     return; 
    } 
    else { 
     var newDate = date.split(' - '); 
     var day   = parseInt(newDate[0]-1); 
     var month   = parseInt(newDate[1]-1); 
     var year   = parseInt(newDate[2]); 

     var nights   = nights - 1; 
     var adults   = adults - 1 ; 
     var children = children - 1; 

     if (nights < 0){nights=0}; 
     if (adults < 0){adults=0}; 
     if (children < 0){children=0}; 

     $("#fromday option").eq(day).attr("selected", "selected"); 
     $("#frommonth option").eq(month).attr("selected", "selected"); 
     $("#fromyear option").eq(year).attr("selected", "selected"); 
     $("#nbdays option").eq(nights).attr("selected", "selected"); 
     $("#adulteresa option").eq(adults).attr("selected", "selected"); 
     $("#enfantresa option").eq(children).attr("selected", "selected"); 

     $("#fromday option").eq(day).siblings().removeAttr("selected"); 
     $("#frommonth option").eq(month).siblings().removeAttr("selected"); 
     $("#fromyear option").eq(year).siblings().removeAttr("selected"); 
     $("#nbdays option").eq(nights).siblings().removeAttr("selected"); 
     $("#adulteresa option").eq(adults).siblings().removeAttr("selected"); 
     $("#enfantresa option").eq(children).siblings().removeAttr("selected"); 

     $("#AccessCode").val(access_code); 

     $("form[name=idForm]").submit(); 
    } 

, 모든 정말 간단합니다 - 그것은 작동하지 않습니다와 나는 그것을 :(에 거의 이일을 잃었다 제외

그것은 인식하지 않는 페이지처럼 숨겨진 타사 양식의 선택이 변경되었습니다. DOM 제출시 양식 제출이 DOM의 태그를 읽지 않을 것으로 생각 했습니까?

도움이 될 것입니다. 나는 정말로 같은 상황을 발견하지 못한다. m은 jquery를 통해 조작 된 다음 제출됩니다.

+2

정확히 작동하지 않는 항목은 무엇입니까? 양식 제출에 의해 인식되지 않는 값은 무엇입니까? 보다 정확한 세부 정보를 제공하십시오. –

+0

@Shadow Wizard - 제출시 양식은 분명히 양식의 'action'속성에서 spec'ed 파일을 호출하고 있습니다. 결과 쿼리 문자열은 DOM에서 'selected'로 표시된 옵션 값을 갖지 않습니다. 단지 각 옵션의 첫 번째 옵션을 기본값으로 사용합니다. 그러므로 양식 제출은 DOM의 jquery 조작에 의해 'selected'값을 선택하지 않습니다 ... –

+0

하 - 당신은 저를 때려 눕 힙니다! 난 단지 내 자신의 질문에 대답하는 것을 허락하지 않는다는 것을 발견하기 위해서만 대답을 타이핑했다. 나는 이것을 올리려고했다. OK - 그것을 분류했다 ... 문제는 다음과 같습니다. $ ("# fromday 옵션"). eq (일) .attr ("selected", "selected"); 실제로 HTML 선택 옵션의 'selected'속성이 조작되었지만 양식 제출에 의해 변경된 값으로 선택되지 않았습니다. 대신이 방법이 효과가있었습니다 ... $ ("# fromday") .val (day); 맨, 끝났습니다. 다행입니다! 초과 ... S –

답변

0

시도는 코드 적절히 값을 선택 2 일째 :

<option value="2">2</option> 

또한 "선택한"속성을 제거하지 마십시오. 여기에 숨겨진 의미가없는 한.

+0

고마워요. 저는 오래된 게시물을 다시 확인하고 있었고, 원래 '코멘트'답변을 포스트로 추가했음을 발견했습니다. - 늦은 '동의'에 대해 미안합니다. 건배, SC –

+0

건배, 결코 늦지 않는 것이 좋습니다. :) –

0

당신이 양식에 등록 된 submit 이벤트 핸들러가 있습니까 ... '예약을 그냥 클릭 -

그것은 모든 온라인 (! 부끄러운, 내가 아는) http://www.hotelginorialduomo.com에서 이미? 다음과 같은 뭔가가있을 수 있습니다 :

$("form[name=idForm]").submit(function() { 
    // do things like validation 
}); 

그렇지 않다면, 당신은 (AFAIK)는 직접 jQuery를 submit() 기능을 실행할 수 없습니다. 당신이 양식을 제출하기 위해 다음을 수행했습니다 :

$("form[name=idForm]")[0].submit(); 

는 또한, gmkv's reply on the jQuery API site을 확인하십시오. 적절한 값, 예를 들어 각 <option> 있고,이 작동하는

$("#fromday").val(day); 

:

+0

제안 해 주셔서 감사합니다. 다시 게시 해 보겠습니다. –

+0

조사 후 양식이 제출되지 않는 상황에 대한 제안이 더 많이 나온 것으로 보입니다. 이 문제에서 양식은 문제가 없지만