2010-08-05 5 views
7

사용자가 선택한 입력 문자열의 선택된 부분 만 가져 오려고합니다. 이 입력을 가지고 있다고 가정 해 봅시다 :사용자가 선택한 텍스트를 텍스트 양식 입력으로 검색 할 수 있습니까?

<input type="text" name="first_name" id="first_name" value="Enter your name" /> 

그리고 사용자는 텍스트 필드를 클릭하고 끌어서 "입력"단어를 선택합니다. jQuery로 해당 텍스트를 검색 할 수 있습니까?

은 내가 전체 값이 방법을 얻을 수 있습니다 알고

$("#first_name").val(); 

그러나 지금까지, 난 단지 선택 "입력"부분을 얻을 수 어쨌든 찾지 못했습니다. 누구나 올바른 방향으로 나를 가리킬 수 있습니까? 감사!

편집 나는 document.getSelection을 시도하고 이러한 "P"로 정적 텍스트 요소에 파이어 폭스에서 잘 일하고있어. 지금까지는 텍스트 입력에서 작동하지 않습니다.

IE에서 window.selection.createRange(). text는 "p"및 텍스트 입력에서 모두 작동합니다.

+0

아마도 http://www.quirksmode.org/dom/range_intro.html을 사용하고 있을까요? – Adam

답변

1
을 사용하여이 jQuery의 선택 기능을 할 수있을 document.getSelection해야 :

$(document).ready(function(){ 
    $("#first_name").focus(function() { 
     $(this).val(""); 
    }); 
}​);​ 

는 예를 참조하십시오 : 이것은 다음과 같이 수행 할 수 있습니다

여기에 최종 답변이 있습니다. 우리가 input 또는 textarea로 작업 할 때 getSelection() 대신 selectionStart 및 selectionEnd를 사용해야하는 것 같습니다. 여기 내 테스트 코드입니다 :

$(".name").mouseup(function() 
{ 
    var selected_text = ""; 
    if (window.getSelection) // Firefox 
    { 
     var text = $(this).val(); 
     selected_text = text.substring(document.activeElement.selectionStart, document.activeElement.selectionEnd); 
    } 
    else // IE 
    { 
     selected_text = document.selection.createRange().text; 
    } 
    alert(selected_text); 
}); 

그리고 내 HTML은 간단하다 :

<input type="text" name="name" class="name" value="Enter your name" /> 

그래서 나는 마침내 그것을 얻었다. 모든 사람들의 의견을 보내 주셔서 감사합니다!

2

This 도움이 될 수 있습니다. .select() 기능을 사용해야합니다.

+0

그 사람이 선택한 텍스트를 얻을 도움이되지 않습니다. –

1

일반 자바 스크립트 바꾸기 메소드를 사용할 수 있습니다.

$("#first_name").val().replace("Enter your name", "") 

는 예를 참조하십시오 http://jsfiddle.net/gezDF/

그러나, 또 다른 옵션은 사용자가 필드에 입력 할 때 텍스트를 제거 할 수 있습니다. http://jsfiddle.net/JNmAF/

+0

사용자가 필드를 클릭하면 솔루션에서 해당 필드를 비 웁니다. 필드에서 선택된 텍스트를 가져 오려고 시도 중입니다. 선택한 텍스트를 비워 두지 않습니다. – Gabriel

+0

첫 번째 해결 방법은 귀하가 요청한 것을 수행합니다 (예제를 추가했습니다). 두 번째 문제는 다른 방식으로 문제를 해결할 수있는 또 다른 옵션이었습니다. 나는 "당신의 이름을 입력하십시오"라는 텍스트가 사용자가 그 필드가 무엇인지를 이해할 수 있도록 도와 줄 것이라고 가정합니다.이 경우 사용자가 입력 할 때 해당 텍스트를 제거하면 입력란에 '이름 입력'텍스트를 구문 분석 할 필요가 없습니다. – sgriffinusa

3
+0

document.getSelection은 올바른 방법으로 보이지만 분명히 IE에서는 작동하지 않습니다. 거기에서 일하게하는 방법이 있는지 아십니까? – Gabriel

+0

@Gabriel try window.getSelection() 또는 document.selection.createRange(). IE 용 텍스트 중 하나 이상이 작동해야합니다. – heisenberg

+0

제 편집에서 작성한 것처럼 createRange(). 텍스트가있는 IE 버전이 작동 중입니다. 선택한 텍스트가 입력 상자에있을 때 Firefox 버전이 작동하지 않는 이유를 알고 있습니까? 감사! – Gabriel

관련 문제