Номера блоков не вводятся в поле ввода - PullRequest
1 голос
/ 31 декабря 2010

Хорошо, сначала немного предыстории, я не могу использовать никакую библиотеку JavaScript, кроме YUI для этого проекта.

То, что я пытаюсь сделать, это взять вход и заблокировать его, чтобы разрешить только числовой ввод. Я знаю, что это проще сделать при проверке, но премьер-министр хочет, чтобы он был включен. То, что я сделал, было создано для бега по сети и прекрасно работает в Firefox. К сожалению, это должно быть совместимо с IE8 и IE6, и это не работает ни в одном.

Вот что у меня есть:

<script type="text/javascript">
    function onlyNumbers(evt) {
        evt = (evt) ? evt : window.event
        var charCode = (evt.which) ? evt.which : event.keyCode        

        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

        return true;

    }
</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
 maxlength="<%=maximumLength %>" onkeypress="return onlyNumbers(event);" />

Любые идеи о том, что с ним не так, что делает его не работает в IE?

Ответы [ 2 ]

1 голос
/ 03 марта 2011
<script type="text/javascript">
    function onlyNumbers(target) {
        var newVal = document.getElementById(target).value;
        if (isNaN(newVal)) {
            document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");
        }
    }


</script>
<input type="text" id="<%=Model.HtmlID %>" value="<%= startingAnswer %>"name="<%=Model.HtmlID %>"
 maxlength="<%=maximumLength %>" onkeyup="javascript:onlyNumbers('<%=Model.HtmlID %>');" />

Потребовались дополнительные усилия и немного творчества, но я понял это.Это на самом деле не запрещает ввод, а просто стирает все, что не разрешено, как только вы отпустите клавишу.На самом деле работает на IE6 тоже

0 голосов
/ 31 декабря 2010

YUI имеет проверку текстового поля как часть его модуля форм. Пример (YUI 3)

var myForm = new Y.Form({
method : "post",
action : "/test.php?action=submit",
inlineValidation : true,
fields : [
    {name : 'input1', type : 'text', label : 'Numbers only: ', validator : 'IntegerField'},

    {type : 'submit', label : 'Submit'},
    {type : 'reset', label : 'Reset'}
]
});
myForm.render('#formContainer');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...