2017-03-22 4 views
1

간단한 검증을 수행하는 함수가 있습니다. 모든 입력 텍스트가 empyt이면 경고 메시지가 뜨고 프로그램이 중지됩니다. 버튼을 클릭하면 기능이 작동합니다. 난 allready 이벤트를 전달하지만, 어쨌든 event.PreventDefault(), 그래서 여전히 서버 측 코드에 액세스 작동하지 않습니다. 다음은 간단한 유효성 검사를 수행하는 기능입니다. 트리거에 대한 events.prevendefault()가 each() 함수가있는 함수 안에서 작동하지 않습니다.

var checkRequired = function(event)   
    $('.box-load .requir').each(function(index,item) { 
    var index = $(item).data('index'); 
    if(index === 'text') { 
     if ($(item).val() == "") { 
     $(this).focus(); 
     alert('Please input the required parameter'); 
     event.preventDefault(); 
     } 
    } 
    }); 
} 

이 코드 사용하는 기능

다음 checkRequired() 벨로

$(document).on('click','.box-load .btn-save', function(event) { 
event.preventDefault(); 
checkRequired(event); 

, 나는 아약스 요청을 할거야. 내가 원한 것은, 입력 텍스트 중 하나가 비어 있으면 이벤트가 중지 된 것입니다. 그러나이 코드를 사용하면 작동하지 않습니다. 어떠한 제안?

미리 감사드립니다.

+0

'checkRequired()'를 수정하여 부울을 반환하고 클릭 처리기 테스트에서 값을 반환하고 Ajax가 작동하면이를 수행하십시오. 클릭 핸들러에서 이미'event.preventDefault()'를 호출했고,'.preventDefault()'는 아무 것도하지 않았기 때문에'checkRequired()'안에'event.preventDefault()'를 사용하는 것은 의미가 없습니다. Ajax 코드를 중지하면 클릭 한 버튼의 기본 (비 JS) 동작 만 방지됩니다. – nnnnnn

+0

처럼 보이는 버튼은 제출 버튼의 종류입니다. 그래서 첫 번째'event.preventDefault'가 작동해야합니다. 양식 제출로 인해 서버 측 코드가 실행되는지 어떻게 알 수 있습니까? –

답변

0

event.preventDefault()으로 전화하면 이벤트의 기본 동작이 실행되지 않습니다.

$(document).on('click','.box-load .btn-save', function(event) 
{  
    checkRequired(event); 
    event.preventDefault(); 

은 for 루프 밖에 있어야합니다.

var checkRequired = function(event)  
{  
     $('.box-load .requir').each(function(index,item) { 
     var index = $(item).data('index'); 
     if(index === 'text') { 
      if ($(item).val() == "") { 
      $(this).focus(); 
      alert('Please input the required parameter'); 
      } 
     } 
     }); 
event.preventDefault(); 
} 
+0

@nnnnnn 제안에 감사 드리며, 지금 말씀 드린 것처럼 작동합니다. 고마워, –

+0

그것이 당신에게 도움이된다는 소식을 듣고 기쁩니다. 그것이 도움이된다면 대답으로 받아 들일 수 있습니다. –

0

event.preventDefault()는 함수 호출을 중지하지 않고 기본 동작을 중지합니다. 함수에서 특별히 return이 아니라면 계속 진행하여 ajax를 시작합니다.

관련 문제