Изменение полей ввода - PullRequest
       6

Изменение полей ввода

0 голосов
/ 01 апреля 2019

У меня возникла ситуация, когда я проверяю тип ввода с помощью jquery.У меня есть раскрывающийся список HTML, который содержит различные параметры ("select:first-child").Я пытаюсь проверить поле ввода на основе этих параметров, для этого я написал следующий код в jquery.Например, если я выберу «Количество», в поле ввода должны быть только цифры.Если я выбираю «TradeDate», тогда в поле ввода должна быть указана дата.

Теперь проблема в том, что когда я выбираю параметр с типом date, появляется datepicker для выбора даты.Но когда я выбираю любой другой параметр, имеющий номера типа, на входе все еще отображается указатель даты.

Итак, где я ошибаюсь, я хочу каждый раз, когда эта проверка

Здесь тип переменной [1] содержит типпараметр, например.float, date, char и т. д.

 $("#cond_div").children("select:first-child").change(function(event){
            var temp = $(this).val();
            var type = temp.split("_");

            $("#cond_div").children("input").on("keypress keyup", function () {

                if (type[1].localeCompare("date") == 0) {
                    $(this).datepicker();
                } 
                else if (type[1].localeCompare("float") == 0) {
                    $(this).val($(this).val().replace(/[^0-9\.]/g, ''));
                    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
                        event.preventDefault();
                    }
                } 
                else if (type[1].localeCompare("int") == 0) {
                    $(this).val($(this).val().replace(/[^0-9\.]/g, ''));
                    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
                        event.preventDefault();
                    }
                }
            });
        });

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

РЕШИТЬ ... Вместо того, чтобы идти с хитрой логикой, нашел простой способ

$(document).ready(function () {
    $("#cond_div").children("select:first-child").change(function (event) {
        var temp = $(this).val();
        var type = temp.split("_");
        console.log("->" + temp);
        console.log("->" + type);

        $("#cond_div").children("input").val("");
        $("#cond_div").children("input").datepicker("destroy");


        if (type[1].localeCompare("date") === 0) {
            console.log(type[1]);
            $("#cond_div").children("input").datepicker();
        } else if (type[1].localeCompare("char") === 0) {
            console.log(type[1]);
            $("#cond_div").children("input").attr("type", "text");
        } else if (type[1].localeCompare("float") === 0) {
            console.log(type[1]);
            $("#cond_div").children("input").attr("type", "number");

        } else if (type[1].localeCompare("int") === 0) {
            console.log(type[1]);
            $("#cond_div").children("input").attr("type", "number");
        }
    });
});
0 голосов
/ 01 апреля 2019

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

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