Используйте JS для добавления символов в текстовое поле - PullRequest
2 голосов
/ 04 апреля 2010

Я хочу добавить символ $ перед входом пользователя в текстовое поле, фактически не отправляя символ $, когда пользователь нажимает кнопку "Отправить". Кроме того, мне нужно запретить пользователю вводить что-либо кроме числовых значений для ввода текста. Я знаю о маске ввода JQuery (http://www.conetrees.com/2009/03/blog/jquery-masked-input-plugin-increase-usability-for-masked-format-input-fields), но этот плагин требует, чтобы вы указали точное количество цифр / букв, которые должен вводить пользователь, что не годится для моего текущего проекта. способ сделать то, что я описал выше?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2010

Один из способов - захватить все данные, кроме доллара, и сохранить его в скрытом поле:

$("form").submit(function() {
    var total = $("#total").val();
    $("#hidden").val(total.replace("$", ""));
});

Вот полное рабочее решение (имейте в виду, что оно, вероятно, нуждается в доработке, прежде чем встретится с реальным миром):

$("form").submit(function() {
    var total = $(".total").val();
    $("#hidden").val(total.replace("$", ""));
});
$("#total").keypress(function() {
    validateNumeric();
}).keyup(function() {

    // if the user has pressed backspace and removed the dollar, put it back
    if($(this).val() == null || $(this).val() == "") {
        $(this).val("$");
    }
});

function validateNumeric(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    if(key == 8) {
        return true;
    }
    key = String.fromCharCode( key );
    var regex = /[0-9]/;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        theEvent.preventDefault();
    }
}

Тестовая разметка:

<form>
    <input type="text" id="total" value="$"/>
    <input type="hidden" id="hidden"/>
    <input type="submit" value="Submit"/>
</form>
1 голос
/ 04 апреля 2010

Если $ будет всегда, как насчет перед текстовым полем?

Лично я избегаю вставлять посторонние предметы (единицы измерения, водяные знаки, еще много чего) в значение текстового поля, например чумы. Они всегда интерпретируются как фактическое содержание так, как им не полагается.

...