2012-05-19 2 views
-2

누군가 나에게 제출 버튼을 누르면 텍스트 상자를 읽기 전용으로 설정하는 자바 스크립트 기능을 제안 할 수 있습니까? 따라서 내용을 수정할 수 없습니다.제출시에만 텍스트 상자를 읽기로 설정

+5

"수정 불가능"문 ... _Anything_ 클라이언트 측을 수정할 수 있습니다. 정통한 사용자는 여전히 텍스트 상자를 활성화하고 값을 입력 할 수 있으며 수동으로 해당 값을 서버의 POST에 포함시킬 수도 있습니다. 보안을 위해 JavaScript를 사용하려는 경우 접근 방식을 다시 평가하십시오. 클라이언트 측 양식 조작은 사용자 경험을위한 것이며 보안을 위해서는 _server-side_ 검증이 필요합니다. – David

답변

2

input을 비활성화하려면 disabled 속성을 설정해야합니다. 당신이 jQuery를 사용할 수있는 경우,이 같은 당신을 위해 무엇을 찾고있는 것 :

$('#idOfYourInput').attr('disabled', true); 

를 jQuery를이 옵션을 선택하지 않으면, 당신은 setAttribute 기능을 사용할 수 있습니다. the MDN documentation for it을 살펴보십시오. 이런 식으로 뭔가 :

var d = document.getElementById('idOfYourInput'); 
d.setAttribute('disabled', 'true'); 

(이 코드 샘플 모두가 당신이 식별한다고 가정 당신의 id 속성에 의해 input 그런 경우가 아니라면, 이러한 변경해야 JQuery와 하나의 변화에 ​​사소한 것.. 후자의 코드 샘플은 input 요소를 찾기 위해 다른 DOM 탐색/선택 함수를 사용해야 할 것입니다.)

당신은 이것을 포함시키려는 대상 속성을 식별하기 위해 선택기를 업데이트하면됩니다. 제출 버튼의 핸들러. 그러나 이것이 현재 페이지 컨텍스트에서만 중요하다는 것을 이해하십시오. 그래서 이라고 가정하면 제출 버튼이 AJAX를 통해 제출을 수행하는 데 사용되고 실제로는 전체 페이지를 POST하지 않습니다. 페이지 전체를 POST하는 경우 페이지를 새로 고칠 때 완전히 새로운 페이지 컨텍스트에있게됩니다. (즉, 버튼 클릭 이벤트와 연결된 모든 코드는 아직 실행되지 않았 음을 의미합니다.)

+0

상황은 채워진 양식이 있고 양식을 제출할 때 양식을 그대로두고 입력 필드를 비활성화하여 변경할 수 없도록합니다. 따라서 사용자는 제출 한 내용을 계속 볼 수 있습니다. – user1403763

+0

@ user1403763 : 완전히 새로운 페이지를 렌더링하는 경우 사용자가 페이지를 편집하지 않아도되는 이유는 무엇입니까? 양식 요소는 데이터 편집을 목적으로합니다. 사용자가 데이터 만 볼 수 있으면 양식없이 데이터를 표시하십시오. 이것이 사용자 경험의 요구 사항이라면 양식과 매우 유사하게 스타일을 지정할 수 있습니다. 그러나'span' 태그와 같이 편집 할 수없는 것들에 데이터를 넣으십시오. – David

+0

내 설명이 적절하지 않다고 생각합니다. 회계 연도 테이블이 있습니다. 사용자가 입력 할 특정 텍스트 필드가 있습니다 (예 : 대상 세부 정보). 사용자에게 로그인이 제공됩니다. 사용자가 로그인하면 데이터를 입력 할 수 있습니다 사용자가 입력 한 세부 정보가 제출 버튼에 저장됩니다. 사용자가 다시 로그인하면 이미 채워진 텍스트 상자가 비활성화되어 사용자가 다른 필드의 세부 정보를 계속 입력 할 수있게됩니다. – user1403763

관련 문제