2010-08-20 2 views
0

jQuery로 작업 중이며 다른 질문을 검토 한 결과 내가 갖고있는 문제에 대한 답을 찾지 못하는 것 같습니다. 양식을 확인하고 하나의 작업으로 제출하려고합니다. 그것은 괜찮아요 제출 버튼을 사용하지만, 그것을 시도하고 다른 기능에서 트리거를 호출 실패합니다.Jquery Form Submit

jQuery 코드 :

$(document).ready(function(){ 
    $('#cmdSave').click(function(){ 
    if ($('#age').val() != $('#agechk').val()) { 
     //Do something 
    } 
    else { 
     //Set form varaible 
     $('#frmactn').val('Save'); 
     //Call form submit 
     $('#frmPrflDtls').submit(); 
    } 
    }); 

    $('#frmPrflDtls').submit(function() { 
    return vrfyDetails(); 
    }); 
}); 

HTML : 그래서 나는 #cmdSave 기능을 주석하고 모두가 잘 제출 버튼 유형을 변경할 수 있지만 경우는, 그것은 것

<form name="frmPrflDtls" id="frmPrflDtls" method="get" action="details.php"> 
    <input name="frmactn" id="frmactn" type="hidden" /> 
    <input name="agechk" id="agechk" type="hidden" value="Senior" /> 
    <input type="text" name="age" id="age" value="Senior" /> 

    <input type="button" id="cmdSave" value="Save" /> 
</form> 

허위 사실만을 확인하거나 아무 것도하지 않지만 결코 제출하지 않습니다.

도움 주셔서 감사합니다.

+0

문제점을 발견했습니다. vrfyDetails() 함수에 오류가 발생하여 페이지를 새로 고치면 오류가 마스킹됩니다. 따라서 제공된 실제 코드는 괜찮습니다. – noangel

답변

0

단추가 아닌 양식에 이벤트를 바인딩해야합니다.

$(function(){ 
    $("#frmPrflDtls").submit(function(){ 
    if(form is ok){ 
     return true; // this will post your form 
    }else{ 
     return false; // form will not be posted 
    } 
    }); 
}); 
+0

나는 이것을 시험해 보았지만 아무런 효과가 없었다. 내 vrfyDetails() 함수는 true 또는 false를 반환합니다. 내가 말했듯이 문제는 $ ('# frmPrflDtls')를 사용하여 호출 할 때 유효성 검사가 true이면 양식을 제출하지 않는다는 것입니다. – noangel

1

당신은 버튼 타입 submit 확인한 다음 제출 처리기에 특정 코드를 추가해야합니다

$('#frmPrflDtls').submit(function() { 
    if ($('#age').val() != $('#agechk').val()) { 
    //Do something 
    return false; // This will prevent the form submission 
    } 
    else { 
    //Set form variable 
    $('#frmactn').val('Save'); 
    return vrfyDetails(); // This will allow the form submission 
    } 
}); 

하고 HTML :

<form name="frmPrflDtls" id="frmPrflDtls" method="get" action="details.php"> 
    <input name="frmactn" id="frmactn" type="hidden" /> 
    <input name="agechk" id="agechk" type="hidden" value="Senior" /> 
    <input type="text" name="age" id="age" value="Senior" /> 

    <input type="submit" id="cmdSave" value="Save" /> 
</form> 

하는 것이 중요합니다 제출 버튼을 클릭하면 JavaScript가없는 사용자도 양식을 제출할 수 있습니다. 도 서버의 유효성을 검사하는 것이 중요합니다. 사용자가 JavaScript 유효성 검사를 쉽게 회피 할 수 있기 때문입니다.

+0

슬프게도 이렇게하면 $ ('# cmdSave')의 내용입니다. click (function() {})은 페이지가로드 될 때 PHP에 의해 동적으로 생성됩니다. 때때로이 수표는 심지어 관련이 없습니다. – noangel

+0

글쎄, 만약 그렇다면 왜 PHP로이 ** 코드를 동적으로 "동적으로"생성 할 수 없으며, 관련성이없는 경우 제외시킬 수 있습니까? 이는 SO 질문에서 정기적으로 발생하는 문제를 해결하는 것보다 쉽고 나쁜 HTML에서부터 디자인 별 기묘에 이르기까지 다양한 이유가있을 수 있습니다. 어쨌든 진짜 '제출'을하지 않는 것은 끔찍한 생각입니다. – MvanGeest