jQuery добавить http: // в качестве префикса для ввода текста, если его нет

#jquery #forms #validation #textinput

#jquery #формы #проверка #textinput

Вопрос:

У меня есть текстовый ввод, для которого требуется URL-адрес в качестве значения (полный http: //), и я хочу, чтобы, если пользователь не записывает его сам, если он добавляется автоматически. Мой код выглядит следующим образом,

jQuery

 $('.txtUrl').keypress(function(e) {
    if(e.keyCode == 13) {
        var ini = $(this).val().substring(0,3);
        if (ini === 'http'){
            $.noop()
        }
        else {
            // get value from field
            var cur_val = $(this).val(); 
            // do with cur_val
            $(this).val('http://'   cur_val);
        }        
    }
});
  

HTML

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

Проблема в скрипке

Ответ №1:

Вы сравниваете http с тремя первыми символами ( substring(0,3) ) текста, которые, конечно, никогда не будут истинными. Измените его на:

 var ini = $(this).val().substring(0, 4);
  

Ответ №2:

http://jsfiddle.net/bitsmix/jMH9b/

if ($(this).val().match(/^http/))

регулярное выражение всегда лучше 🙂

Комментарии:

1. Регулярное выражение всегда дороже, чем замена строки.