У меня небольшая проблема с изменением регистра в веб-формах ASP.NET. То, что у меня есть в моем коде, преобразует весь введенный текст в верхний регистр, я хочу преобразовать только часть текста. Например, если я ввожу John Doe, приведенный ниже код преобразует его в JOHN DOE. Мне нужен результат, когда я выбираю только Джона, чтобы вернуть ДЖОНА Доу, это должно работать так же, как текстовый редактор. Если кто-нибудь знает, можно ли это сделать в веб-формах ASP.NET, я был бы очень признателен. Заранее спасибо.
<asp:TextBox ID = "TextBox1" runat = "server"></asp:TextBox>
<asp:Button ID = "Button1" runat = "server" Text = "UpperCase" OnClick = "Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Style.Add("text-transform", "uppercase");
}





Поскольку у вас есть щелчок кнопки, и вы можете (мы предполагаем) запустить код, это будет работать:
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text != "")
{
string[] sParts = TextBox1.Text.Split(' ');
sParts[0] = sParts[0].ToUpper();
TextBox1.Text = string.Join(" ",sParts);
}
}
Итак, выше приводит текст к первому найденному месту. Преобразует в верхний регистр, а затем помещает результаты обратно в текстовое поле.
К вашему сведению: для этого требуется использование одинарных и двойных кавычек, как указано выше.
Итак, мы хотим позволить пользователю выбрать текст в поле, а затем преобразовать его в верхний регистр.
Итак, скажем, мы бросаем текстовое поле - давайте перейдем к многострочному и позволим пользователю ввести какой-либо текст и выбрать какой-либо текст, а затем преобразовать выделенный текст в верхний регистр.
Таким образом, эта разметка:
<asp:TextBox ID = "TextBox1" runat = "server" TextMode = "MultiLine"
Height = "238px" Width = "492px" ClientIDMode = "Static" >
</asp:TextBox>
<br />
<br />
<asp:Button ID = "cmdUpper" runat = "server" Text = "Convert selected text to uppper"
CssClass = "btn"
OnClientClick = "MyUpper();return false" />
<script>
function MyUpper() {
tBox = $('#TextBox1')
selStart = tBox[0].selectionStart - 1
selEnd = tBox[0].selectionEnd
myUpper = tBox.val().substring(selStart, selEnd)
myUpper = myUpper.toUpperCase()
myResult = tBox.val().substring(0, selStart) + myUpper +
tBox.val().substring(selEnd)
tBox.val(myResult)
}
</script>
Итак, теперь мы можем выделить текст и нажать кнопку, он преобразует текст в верхний регистр.
Например это:
Я, конечно, предполагал, что jQuery доступен.
Хм, хорошо, выделенный текст становится невыделенным, когда происходит кнопка + обратная передача. Это говорит о том, что такой код должен быть на стороне клиента (Javascript). Напряженный день, но я рассмотрю это позже сегодня или завтра и придумаю решение для выделенного текста.
@albert-d-kallal jsfiddle.net/TrueBlueAussie/8syb2d8j/4 это именно то, что мне нужно и когда я вставляю его в свой проект, он работает, но при каждом нажатии на кнопку страница обновляется и никаких изменений в верхний регистр сохраняется. Я пробовал с панелью обновления, но она не работает, так как она находится на стороне клиента, а не на сервере.
см. мою правку. Мы могли бы сделать это на стороне клиента, но поскольку мы выбираем текст, это лучше делать на стороне клиента. См. выше часть 2.
@albert-d-kallal спасибо, но это преобразует только первое слово. Мне нужно, чтобы он работал так же, как MS Word, преобразование должно производиться только на выделенном тексте с моим курсором. Например, в john smith, если я выберу только "smith" при щелчке, он должен вернуть john SMITH