2015-08-27 6 views
2

У меня есть TextBox элемент управления в моей веб-форме, где в я отображается Высота & Ширина определенного продукта.Удалить текст из текстового поля при нажатии

Теперь я показываю это следующим образом:

enter image description here

Как вы можете видеть, я прилагаю " показать дюйма, в строке следующим образом:

txtH.Text = arrHW[i].ToString() + "\""; 

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

Мне нужно что-то или через JavaScript или C#, который удаляет символ ", пока пользователь нажимает на текстовое поле и удаляет его при изменении фокуса.

Я пробовал этот метод, но он не работает!

protected void txtH_TextChanged(object sender, EventArgs e) 
     { 
      string height = txtH.Text; 
      char[] splitArr = { '"' }; 
      string[] editH = height.Split(splitArr); 

      for (int i = 0; i < editH.Length; i++) 
      { 
       if (editH[i].ToString().Equals("\"")) 
       { 
        editH[i].Remove(i); 
       } 
      } 
     } 

Это код дизайнер для текстовых полей:

<asp:PlaceHolder ID="plcHW" runat="server"> 
     <div class="input-group"> 
       <span class="input-group-addon"><i class="fa fa-arrows-v"></i>&nbsp;Height</span> 
       <asp:TextBox ID="txtH" runat="server" Width="60px" CssClass="form-control" OnTextChanged="txtH_TextChanged" /> 

       <span class="input-group-addon"><i class="fa fa-arrows-h"></i>&nbsp;Width</span> 
       <asp:TextBox ID="txtW" runat="server" Width="60px" CssClass="form-control" /> 
     </div> 
</asp:PlaceHolder> 
+0

Вы можете просто заменить его пустой строкой на фокус, а затем снова добавить фокус, если есть какое-то значение. – Lali

+1

Зачем добавлять «в текстовое поле в первую очередь. Просто отметьте, что единицы находятся в дюймах или имеют выбор, который обозначает, что единицы, которые пользователь может выбрать. – epascarello

+0

@Lali: Я был бы признателен, если бы вы показали мне демо-версию –

ответ

1

Вы можете очистить текстовое поле, как только фокус на нем затем добавить " после того, как пользователь добавляет значение к нему! Это один из способов сделать это!

var prev=""; 
$('#HEIGHT').focus(function() { 
prev=$(this).val(); 
$(this).val(prev.replace("\"", "")); 

}).blur(function() { 

if($(this).val()==""){ 
$(this).val(prev) 
} 
else{ 
$(this).val($(this).val()+"\""); 
} 
}); 
+0

Это неверно. Вы удаляете всю строку, а не то, что OP хочет – epascarello

+0

точно ..Что делать, если пользователи просто нажимают на текстовое поле и не редактируют .. он удалит значение –

+0

ok плохо внести изменения –

1

Вы можете сделать это, как

$(document).ready(function(){  
    $("TextBoxId").focus(function(){ 
     var tval = $(this).val(); 
     $(this).val(tval.replace(/\"/g, "")); 
    }); 

    $("TextBoxId").focusout(function(){ 
     var tval = $(this).val(); 
     $(this).val(tval.replace(/\"/g, "")+ '\"'); 
    }); 
}); 
+0

Нуждается в проверке ma уверен, что в нем нет ». Пользователь может ввести его в ... – epascarello

+0

Это будет работать, если только пользователю разрешено вводить номер – ssilas777

+0

Да, @epascarello, I modified – Lali

1

Без JQuery:

(function($el) { 
    "use strict";  

    $el.addEventListener("focus", adjust, true); 
    $el.addEventListener("blur", adjust, true); 

    function adjust($e) { 
     var e = $e.type; 
     if (e === "focus") $el.value = $el.value.replace(/\"/g, ""); 
     if (e === "blur") $el.value = $el.value + '"';  
    }  

})(document.getElementById("height")); 

http://jsfiddle.net/dlizik/5cb7g8te/

+0

Пользователь может ввести '' ', чтобы вы могли получить несколько« – epascarello

+0

честность. Я думаю, что лучшим решением является отделить озабоченность по стилю от озабоченности данными; просто поставьте метку кавычки в отдельный диапазон :) –

+0

это добавит '' ', если я поставлю значение из бэкэнда? –

1

Я попытался решить проблему с этим Fiddle: http://jsfiddle.net/akd7r31a/1/

$(document).ready(function(){ 

    $('#username').focus(function(){ 
     var txtValue = $(this).val(); 
     var charTest = txtValue.substr(txtValue.length - 1); 
     if(charTest == '"'){ 
      var showString = txtValue.slice(0, -1); 
      $(this).val(showString); 
     } 
    }); 

    $('#username').focusout(function(){ 
     var txtValue = $(this).val(); 
     var charTest = txtValue.substr(txtValue.length - 1); 
     if(charTest != '"'){ 
      var newVal = $(this).val() + '"'; 
      $(this).val(newVal); 
     } 
    }); 
}); 
+0

Я не понимаю, как это решает мою проблему? Он не добавляет «к строке или удаляет ее? вы проверили скрипку? И мое текстовое поле не является именем пользователя его текстовым полем Высота, Ширина –

+0

извините, iforgot добавит библиотеку jquery к моей скрипке. теперь он отлично работает –

+0

Вы можете изменить название своего текстового поля, как хотите, просто замените «имя пользователя» своим собственным идентификатором –

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