2017-01-06 5 views
2

У меня есть вход, где я хочу, чтобы первый символ был #. Это означает, что если пользователь что-то пишет, он автоматически добавляет #, или лучше, # уже присутствует на входе.Укажите первый символ ввода

Как это сделать? Я думал, что смогу сделать это с помощью маски jQuery, но я не смог заставить ее работать.

+0

если вы хотите по умолчанию на входе 'Text' вы должны установить' 'value' нравится < type = "text" value = "#"> ', но проблема, если они удаляются, вы не сможете получить это снова. – soorapadman

+0

Я предполагаю, что вам нужно это для ввода шестнадцатеричного кода? Если это так, вам также потребуется ограничение символов на 6 (7, включая '#')? – Pineda

ответ

0

Смотреть это решение http://codepen.io/bachors/pen/yeJOrg

Запуск пример для удовлетворения ваших потребностей:

/*********************************************** 
 
* #### jQuery Prefix Input #### 
 
* Coded by Ican Bachors 2015. 
 
* http://ibacor.com/labs/jquery-prefix-input/ 
 
* Updates will be posted to this site. 
 
***********************************************/ 
 

 
$(".yourClass").focus(function(){var a=$(this).data("prefix"),ibacor_currentId=$(this).attr('id'),ibacor_val=$(this).val();if(ibacor_val==''){$(this).val(a)}ibacor_fi(a.replace('ibacorat',''),ibacor_currentId);return false});function ibacor_fi(d,e){$('#'+e).keydown(function(c){setTimeout(function(){var a=bcr_riplis($('#'+e).val()),qq=bcr_riplis(d),ibacor_jumlah=qq.length,ibacor_cek=a.substring(0,ibacor_jumlah);if(a.match(new RegExp(qq))&&ibacor_cek==qq){$('#'+e).val(bcr_unriplis(a))}else{if(c.key=='Control'||c.key=='Backspace'||c.key=='Del'){$('#'+e).val(bcr_unriplis(qq))}else{var b=bcr_unriplis(qq)+c.key;$('#'+e).val(b.replace("undefined",""))}}},50)})}function bcr_riplis(a){var f=['+','$','^','*','?'];var r=['ibacorat','ibacordolar','ibacorhalis','ibacorkali','ibacortanya'];$.each(f,function(i,v){a=a.replace(f[i],r[i])});return a}function bcr_unriplis(a){var f=['+','$','^','*','?'];var r=['ibacorat','ibacordolar','ibacorhalis','ibacorkali','ibacortanya'];$.each(f,function(i,v){a=a.replace(r[i],f[i])});return a}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<form action="#"> 
 
    <input id="yourInput" class="yourClass" type="text" placeholder="Type a text here..." data-prefix="#" /> 
 
</form>

+0

Замечание ** data-prefix = "#" *** во входном элементе –

1

Вот код,

$("#your-input-id").keypress(function(e) { 
 
    if (e.keyCode != 8) { 
 
     var text = this.value; 
 
     if (text.length == 0) { 
 
      this.value = text + '#'; 
 
     } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<form action="#"> 
 
    <input id="your-input-id" type="text" placeholder="Type a text here..." data-prefix="#" /> 
 
</form>

Надеюсь, что это сработает.

Будет добавлено #, когда вы начнете вводить текст, и он будет добавлять все позже до #.

EDIT

$("#your-input-value").keydown(function(e) { 
    var cur_val=$(this).val(); 
    var field=this; 
    setTimeout(function() { 
     if(field.value.indexOf('#') !== 0) { 
      $(field).val(cur_val); 
     } 
    }, 1); 
}); 
+0

Это хорошо работает для ситуации по умолчанию, но можно получить ввод без начального '#' (например, ввести текст, выделить весь текст , введите текст) В зависимости от желаемого использования это может быть или не быть важным. – DBS

+0

используйте префиксный текст, затем, сохраняя, просто добавьте # в строку. – rahulsm

+0

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

0

Вы можете попробовать это,

HTML

<input type="text" class="txtUrl" /> 

Javascript

$('.txtContent').keydown(function(e) { 
    var cur_val = $(this).val(); 
    if(cur_val.length == 0) { 
     $(this).val('#' + cur_val); 
    } 
}); 

Вот рабочая скрипку: http://jsfiddle.net/jMH9b/43/

Надеется, что это помогает!

+0

Это почти тот же самый ответ, что и мой. – rahulsm

+0

@VforVendetta Простите, приятель! .. Я не заметил .. Я был занят составлением ответа. –

+0

Да .. Это * почти * ... не * полностью * –

0

Как вы заявили, если есть SLASH, он ничего не должен делать. Вот решение

$('#description').bind('input', function(event){ 
 
    var currentVal = $(this).val(); 
 
    $(this).val(currentVal.indexOf('#') !== 0 ? ('#' + currentVal) : currentVal) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label name="description">Enter some text</label> 
 
<input type="text" id="description" name="description">

0
<input id='e' onKeyup='test(this)' value='#'/> 

var input = document.getElementById('e'); 

function test(e){ 
input.value = e.value.charAt(0) !== '#' ? input.value = '#' + e.value : e.value 
} 

надеюсь, что это помогает ...

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