2014-02-11 2 views
0

다음 HTML 양식을 사용하여 사용자가 제품의 사용자 정의 레이블을 선택적으로 저장할 수 있습니다.jQuery를 통해 양식을 제출할 때 Symphony CMS가 빈 입력 값을 저장하지 않는 이유는 무엇입니까?

<form action="http://domain.com/members/systems" method="post" class="mod-SystemLabel-EditForm"> 
    <label class="mod-SystemLabel-EditLabel" for="label-623">Customer label</label> 
    <input type="text" value="sdff sdf sd" name="fields[customer-label]" class="mod-SystemLabel-EditInput" id="label-623"> 

    <a href="#" class="mod-SystemLabel-OtherButton-clear">Clear</a> 
    <a href="#" class="mod-SystemLabel-OtherButton-cancel">Cancel</a> 

    <input type="submit" value="Save" name="action[system-edit-label]"> 

    <input type="hidden" value="623" name="id"> 
</form> 

텍스트 입력을 수동으로 취소하고 양식을 제출하면 Symphony CMS가 빈 값을 예상대로 기록합니다.

아래 양식 제출을 트리거하기 위해 jQuery를 사용하면 Symphony CMS는 현재 값을 그대로 두거나 다시 저장합니다. 내가 주석 행의 주석을 해제하면

$('.mod-SystemLabel-OtherButton-clear').click(function(e) { 
    e.preventDefault(); 
    $(this).siblings('.mod-SystemLabel-EditInput').val(''); 
    //alert($(this).closest('form').serialize()); 
    $(this).closest('form').submit(); 
}); 

는 경고가 포함

fields%5Bcustomer-label%5D=&id=623 

이 직렬화 내가 입력에게 자신을 백 스페이스 때 생성되는 것과 같은, 그래서 실제 양식 제출처럼 보이는해야 수동 입력 지우기와 같고 제출 버튼을 클릭하십시오.

Symphony 필드가 필수로 설정되지 않았으며 유효성 검사 규칙이 없습니다.

최종 결과가 다른 이유는 무엇이며 어떻게 이전 값 레이블을 덮어 쓰면서 빈 값을 저장할 수 있습니까?

답변

0

양식이 JavaScript를 통해 제출 될 때 양식의 제출 입력 이름이 전달되지 않으며 Symphony CMS가이를 사용하여 적절한 이벤트를 트리거합니다.

제출 입력과 함께 전달 된 이벤트 이름을 얻으려면 "클릭"을 트리거하십시오.

$('.mod-SystemLabel-OtherButton-clear').click(function(e) { 
    e.preventDefault(); 
    $(this).siblings('.mod-SystemLabel-EditInput').val(''); 
    $(this).siblings('input[type=submit]').trigger('click'); 
});