Почему моя маска ввода jquery не работает?

Я пытаюсь использовать подключаемый модуль маски ввода jQuery (jquery.maskedinput-1.3.min.js), и я искал несколько примеров/решений, и мой код точно такой же, как другие рабочие примеры, но он просто не будет работай на меня. Имейте в виду, что мой код пока только тестирует этот плагин (пытаясь заставить его работать, что объясняет, почему я пытаюсь применить маску ввода даты к полю имени). Мой код приведен ниже:

HTML

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Persons of Interest</title>
    <link rel="stylesheet" type="text/css" href="/Default_Styler.css" />
    <link rel="shortcut icon" href="/person.ico" type="image/x-icon" />
    <script src="/Scripts/jquery.1.7.2.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script>
    <script src="/Scripts/FormHandler.js" type="text/javascript"></script>
</head>
<body>
    <div id="WrapperDiv">
        <div id="TitleBar">    <!--Beginning of Title Bar-->
            <div style="padding-top: 30px; text-align: center;">Persons of Interest</div>
        </div>                 <!--End of Title Bar-->
        <div id="FormHolder">
            <form action="">
                <p><label>POI Name: </label><input type="text" id="POI Name" name="POI Name" value=""/></p>
            </form>
        </div>
    </div>
</body>
</html>

JavaScript

jQuery(function ($) {
    $("#POI Name").mask("99/99/9999");
});

Кроме этого, я могу заверить вас, что упомянутые библиотеки jQuery действительно находятся в соответствующем каталоге. (/Скрипты/...)

Я не получаю ошибку, когда я нажимаю в поле ввода или что-то еще, он просто ничего не делает.


person VoidKing    schedule 07.09.2012    source источник
comment
Не ответ, так как я действительно согласен, что вы должны убрать пробел из своего id, но ради любопытства это должно работать (избегайте пробела): $("#POI\\ Name") jsfiddle.net/xA8GY/1   -  person Wesley Murch    schedule 08.09.2012


Ответы (3)


Селекторы jQuery следуют стандартному синтаксису CSS, поэтому пробел в середине вашего идентификатора фактически рассматривается как селектор потомков. Сделайте свою жизнь проще: при работе с jQuery ограничивайте свои идентификаторы и классы буквенно-цифровыми символами, дефисом и этим все.

Чтобы уточнить: в jQuery есть синтаксис кавычек/экранирования, но ИМХО это слишком раздражает, поэтому я даже не привожу пример.

person Dan    schedule 07.09.2012
comment
OMG, я должен прекратить добавлять пробелы в свой код... Большое спасибо! Ваш ответ был именно тем, почему это не сработало. Честно говоря, теперь это паскаль и верблюжий кейс... - person VoidKing; 08.09.2012

удалите пробел из идентификатора, а затем попробуйте это

jQuery(function ($) {
    $("#POIName").mask("99/99/9999");
});
person Codegiant    schedule 07.09.2012

Пробелы недопустимы в атрибутах ID. Вы должны изменить свой идентификатор на $("#POIName") и также обновить свой html.

Jquery-ids-with-spaces — аналогичный вопрос, который может показаться вам интересным.

person Josh Mein    schedule 07.09.2012