Событие нажатия клавиши шаблона JQuery не прикреплено.Читать подробнее - PullRequest
0 голосов
/ 13 июня 2011

Я проверил в FireFox Firebug и обнаружил, что событие Keypress не присоединено к текстовому полю Index, что позволяет ему все в нем.

НО: если я перемещаю это из шаблона, событие присоединяется, и все работает правильно.

Кто-нибудь получил решение?

$('#index').keypress(function (e) {
    if (e.which == 8) return true;
    if (!/[\d+]/i.test(String.fromCharCode(e.which))) return false;
});

Шаблон

<script id="gridTemplate" type="text/x-jQuery-tmpl">
    <tr class="gridRow">
        <td class="cellTd">
            <input id="index" name="index" class="numberField" type="text" value="${IndexOrder}" />
        </td>
    </tr>

</script>



<div class="gridDiv">
<table class="gridTable" cellspacing="0" cellpadding="0">
    <tbody>
        <tr class="gridTitleRow">
            <td class="iconLink widthAuto">Sort Order</td>
        </tr>
    </tbody>
</table>
</div>

1 Ответ

2 голосов
/ 13 июня 2011

Я думаю, это потому, что ввод добавляется на страницу поздно. Попробуйте связать нажатие клавиши, используя .live()

$('#index').live('keypress',function (e) {
    if (e.which == 8) return true;
    if (!/[\d+]/i.test(String.fromCharCode(e.which))) return false;
});

.live() позволяет:

Прикрепить обработчик к событию для всех элементы, которые соответствуют текущему селектор, сейчас и в будущем .

от http://api.jquery.com/live/ (мой акцент)

...