2015-08-26 2 views
0

У меня есть приложение с полем ввода, которое необходимо преобразовать в верхний регистр, как только пользователь вводит символ. Это работает как ожидалось.HTML Поле ввода, помните местоположение курсора

Но если пользователь пытается ввести символ между уже существующим словом, курсор переместится в конец поля ввода. Есть ли способ сохранить курсор в нужном месте?

Перед тем, как проголосовать, я просмотрел сообщения в Stack Overflow и других местах. Не удалось найти правильное решение. Предоставляйте свои отзывы.

JSFiddle Link

$(function() { 
 
    $("#referenceNo").on('keyup change', function(e) { 
 
    $(this).val($(this).val().toUpperCase()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<label for="referenceNo">Reference No</label> 
 
<br/> 
 
<input type="text" id="referenceNo" name="referenceNo" value="HELLO WORLD!" />

Попробуйте ввести символ между "Hello World!", Курсор будет выталкиваться в конце слова. Это требует фиксации ..

ответ

1

Вы можете достичь визуализации с помощью CSS и стоимости отправки на сервер, вы можете использовать JavaScript.

Как: это CSS код

#abc { 
    text-transform: uppercase 
} 

это HTML:

<input class="form-control" type="text" id="abc" /> 

это JavaScript:

$("#abc").on("change", function(){ var x = $("#abc").val().toUpperCase(); }); 

вы можете использовать "KeyUp" событие для мгновенного значения если вы этого не требуете, вам не нужно связывать дополнительное событие с вашим кодом.

+0

Спасибо, оцените более простое решение. – LearningDeveloper

+0

Надеюсь, вы удовлетворитесь моим ответом, и если это полезно, тогда проголосуйте за меня. –

+0

Yup, просто сделал. Был на выходные, так что задержка. – LearningDeveloper

2

Попробуйте это, Вы можете использовать setSelectionRange Работа Fiddle

$(function() { 
    $("#referenceNo").on('keyup change', function (e) {    
     var startPos = this.selectionStart, 
     endPos = this.selectionEnd;  

     $(this).val($(this).val().toUpperCase());  
     // restore cursor 
     this.setSelectionRange(startPos, endPos); 

    }); 
}); 

Также вы можете использовать чистый CSS

#referenceNo { 
    text-transform: uppercase 
    } 
+0

Решение css приятно! Где вы его нашли? – DontVoteMeDown

+0

Пробовал это, он работает. Будет использовать этот код на данный момент. Благодарю. Будет держать вопрос открытым на день или около того, чтобы увидеть, появляется ли лучший ответ. – LearningDeveloper

+0

Рад, что это сработало .. – ssilas777

2

Я предлагаю вам сделать это с помощью CSS. Добавить имущество text-transform к элементу:

#referenceNo { 
    text-transform: uppercase 
} 

Не требуется скрипт.

Fiddle

+0

В коде JS я все еще получаю маленькие символы. Это опрятный трюк, он видел это в одном из других вопросов, но не полезен в моем случае. Спасибо за предложение. – LearningDeveloper

+0

@GauthamPJ np gl! – DontVoteMeDown

Смежные вопросы