JQuery: генерировать действительный тег строки - PullRequest
2 голосов
/ 21 июня 2010

Я ищу способ создания допустимого тега (строки с только a-z и минусом в качестве допустимых символов) из заданной строки.

Просто позвольте мне показать вам код:

<p>
    <label>Tag Title *:</label>
    <input type="text" class="tag_title" name="input_tag_title" value="" />
</p>
<p>
    <label>Tag (A-Z; -) *:</label>
    <input type="text" class="tag" name="input_tag" value="" />
</p>

Как только заголовок тега теряет фокус, поле ввода тега должно заполняться правильной строкой. Он должен содержать только символы a-z (независимо от регистра) и минус. Но это должно происходить только в том случае, если ввод тега пуст. Если она не пустая, введенная строка (в поле ввода тега) должна проверяться на наличие недопустимых символов и автоматически заменять все недопустимые символы (заменять все неалфавитные символы на минусы).

Я попробовал это с

$(".tag_title").blur(
    function()
    {
        $(".tag").text = this.value.replace(/[^a-z\-]/g, '_');
    }
);

Но это не работает. Есть намеки?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

Вам необходимо использовать .val(...) для изменения значения текстового ввода.

Я также использовал .val() против элемента .tag_title (обернутого в объект jQuery), который получил blurсобытие для получения значения, введенного пользователем.

Проверьте его: http://jsfiddle.net/8mqzd/

$(".tag_title").blur(
    function() {
        var $tag = $('.tag');
        if( $tag.val() == "" ) {
            $tag.val( $(this).val().replace(/[^a-z\-]/g, '-') );
        }
    }
);​

http://api.jquery.com/val/

РЕДАКТИРОВАТЬ: Сделано так, что он заменяет только если элемент .tag пуст (как требуется).

РЕДАКТИРОВАТЬ: Как указано Ник , ваше использованиеthis.value для получения значения элемента, получившего blur, было просто отлично.Я изменил его, чтобы использовать jQuery .val(), но, пожалуйста, не принимайте от этого идею, что вы должны использовать .val().: О)

0 голосов
/ 21 июня 2010

Одна проблема заключается в том, что элементу ввода требуется функция jQuery val ()

$(".tag").text = this.value.replace(/[^a-z\-]/g, '_'); 

может быть таким:

var t = $('.tag');
t.val(t.val().replace(/[^a-z\-]/g, '_')); 

РЕДАКТИРОВАТЬ: Спасибо digitalFresh, я рассмотрел и внес изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...