2016-09-17 4 views
0

것은 나는 기본적으로 입력 필드에서 백 스페이스를 방지하는 사이트에 일하고 있어요,하지만 특정 입력, 나는 백 스페이스를 허용하도록 기본 동작에 반환하고 싶습니다.입력 필드를 기본 동작으로 되 돌리는 방법은 무엇입니까?

가장 간단한 방법은 무엇입니까? 기본적으로 나는 preventDefault()의 반대가 필요하다.

업데이트 : 나는 주석에 다음과 같은 메시지를 추가하지만이 질문에 중요하다 생각했다. 그래서 여기있다 :

불행하게도, 나는 그것이 백 스페이스를 방지하는 방법을 모른다. 입력란을 페이지에 삽입하는 크롬 확장 프로그램을 만들고 있습니다. 백 스페이스를 제외한 모든 것이 작동합니다. 나는 그것을 막는 코드를 찾으려고했지만 불가능하다.

당신은 JS 후 직접 페이지에 인라인 스크립트를 수행 할 수는 백 스페이스를 방지 자바 스크립트 파일 인 경우 경우

  if(!document.getElementById("input_typing")){ 
        var input = document.createElement('input'); 
        input.id = "input_typing"; 
        input.tabIndex = 1; 
      input.style.width = "95%"; 
        input.focus(); 
        txts[i].parentNode.appendChild(input); 
} 
+0

턴 오프 자바 스크립트) –

+1

는 심각합니다 - 그것은 백 스페이스가 적어도 방지하는 방법 첫번째) ($ (이) .unbind ('제출')와 같은 –

+0

뭔가 더 자세한 정보를 제공에 제출합니다.(); – Chris

답변

1

내 아이디어는 다음과 같습니다. * 사이트에서 백 스페이스 *이 발생하지 않도록 문서에 첨부 된 처리기가있을 수 있습니다.

나는이의 모르겠지만, 내 생각이 명확하게하기 위해 조각을 만든 : 이벤트 핸들러가 당신이 새로 생성 된 입력 필드에 대한 새 이벤트 처리기를 추가 할 수 있습니다 백 스페이스의 기본 동작을 방지하는 경우

을 전파를 중지하라.

// 
 
// Let's assume this is the site handler to prevent backspace 
 
// 
 
document.addEventListener('keydown', function(e) { 
 
    if (e.which === 8) { 
 
    e.preventDefault(); 
 
    } 
 
}); 
 

 

 
// 
 
// your new element 
 
// 
 
if(!document.getElementById("input_typing")){ 
 
    var input = document.createElement('input'); 
 
    input.id = "input_typing"; 
 
    input.tabIndex = 1; 
 
    input.style.width = "95%"; 
 
    input.focus(); 
 
    document.querySelectorAll('input[type="text"]')[0].parentNode.appendChild(input); 
 

 
    // 
 
    // Add the keydown event handler to stop propagation 
 
    // 
 
    input.addEventListener('keydown', function(e) { 
 
    e.stopPropagation(); 
 
    }); 
 
}
<form action="action_page.php"> 
 
    First name:<br> 
 
    <input type="text" name="firstname" value="Mickey"> 
 
    <br> 
 
    Last name:<br> 
 
    <input type="text" name="lastname" value="Mouse"> 
 
    <br><br> 
 
    <input type="submit" value="Submit"> 
 
</form>

+0

해결책이 있다고는 생각하지 않았지만 해냈습니다. 정말 고맙습니다. e.stopPropagation();을 기억해야합니다. – Johnny

+0

@Johnny 기쁩니다. – gaetanoM

0

:

분야를 만드는 내 코드

이있다 파일 (입력 필드의 백 스페이스를 방지하는 코드 포함)이 추가됩니다. JS 포함되도록

- 그것은 백 스페이스를 사용할 수 없게됩니다. 후이 당신은 이전 기능을 사용하려면 인라인 스크립트 할 때 - 그것은 백 스페이스 방지 CSS 파일 인 경우 스크립트 코드가 포함 된 JS

경우에 우선합니다 :

당신은 인라인 CSS를 사용 할 수 있습니다 으로 스크립트를 작성하면 각 행의 끝에이 중요하므로 기존 CSS를 덮어 씁니다.

참고 : 확실성을 제공하고 혼란을 피하기 위해 페이지 끝에는 CSS/js 인라인 스크립팅 코드를 추가하는 것이 가장 좋습니다.

+0

CSS가있는 백 스페이스를 방지 할 수 있습니까? 나는 그것을 몰랐다. 이전 기능을 사용하기 위해 인라인 스크립트가 어떻게 생겼습니까? – Johnny

+0

이전 페이지에서 코드를 추가하고 입력 필드에 다시 매핑하면됩니다. – Pat

+0

당신의 입력 (class = "inputField1")은 이전에 25자를 허용했으며, 이제는 포함 된 일부 j가 5자를 허용하기 때문에 이것을 할 수 있다고 가정 해보십시오. 는 페이지 '<스크립트 유형 = "텍스트/자바 스크립트"> $ (문서) .ready (함수() { $ ('. inputField1'). ATTR ("최대 길이의 끝에 다음과 같은 코드를 추가합니다 ", 25), }); ' – Pat

관련 문제