2014-04-10 6 views
0

제출시 양식의 모든 텍스트 입력 필드에서 특정 문자를 변경하는 것이 가장 좋은 방법은 무엇입니까? 양식을 제출하면 "x"를 "y"로, "0"을 "1"로 바꿉니다. 이 코드를 양식 유효성 검사 스크립트 안에 넣어야합니다. 그러면 제출시 실행됩니다.양식 제출시 문자 변경

지금까지 발견했습니다. 확실히 내가 필요로하는 무엇을, 심지어 수 없습니다 이외의 작동 :)

var change_text = document.getElementById("mytextinput"); 
change_text = change_text.replace(/x/g, 'y'); 
change_text = change_text.replace(/0/g, '1'); 

// and so on for all text inputs... 
+2

생각해보십시오. 클라이언트 측에서이 아이디어를 사용하는 대신 서버 측에서 동일한 아이디어를 시도 할 수없는 이유는 무엇입니까? 자바 스크립트와 혼동하기보다는 문자열 조작에 도움이되는 많은 서버 측 스크립팅 언어가 있습니다. –

+0

@Ganesh 이것은 실제로 좋은 아이디어입니다. – DontVoteMeDown

+0

@ 가네쉬 좋은 생각. 어쨌든 서버 측 유효성 검사가 추가로 필요합니다. – PointedEars

답변

1

를 양식의 태그의 onsubmit 이벤트에 이벤트 핸들러를 연결하면, 핸들러는 형 이벤트의 인수와 함께 호출됩니다 :

var submithandler = function (event) { 
    var form = event.target; // this is not be cross browser compatible 
    // iterate over all form elements: 
    var i, l; 
    for (i = 0, l = form.elements.length; i < l; i += 1) { 
    if (form.elements[i].type === 'text') { // only for type="text" 
     form.elements[i].value = form.elements[i].value.replace(/x/g, 'y'); 
    } 
    } 

    return true; // return false to prevent form submit 
}; 
+0

감사합니다. 또한 0을 1로 바꾸려면 다음을 추가해야합니다. form.elements [i] .value = form.elements [i] .value.replace (/ 0/g, '1'); ? – Malasorte

+1

'event.target' 대신'this'를 쓰면 더 호환이됩니다. 더 나은 것은, DOM을 사용하여'submit' 이벤트 리스너를 추가하지 말고,'form' 요소의'onsubmit' 속성을 사용하고 거기서 호출 한 함수/메소드에'this'를 전달하십시오. – PointedEars

+0

@PointedEars가 맞습니다. '

phylax