Не могу знать поведение клика на отключенном элементе

0

Все, я застрял с проблемой ниже, Пожалуйста, помогите ее пересмотреть. У меня есть два входных текста на странице. Пусть говорят A и B. Когда загружается страница, A разрешает вводить текст, когда B отключен, после того, как A onblur запущен, я буду проверять значение A, если оно действительно (равно test на строковое значение), тогда B позволяет вводить текст. Проблема заключается в том, что событие A on-blur будет запущено, когда я нажимаю любую страницу, кроме щелчка на B, потому что в это время B отключается. Код выглядит как показано ниже.

<html>
<head>
    <script type="text/javascript" >
        function ATextOnBlur(obj)
        {
            if (obj.value=='test')
            {
                document.getElementById("BTxt").disabled=false;
            }
        }

    </script>
</head>
<body>
    <input type="text" id="ATxt" value="" onblur="ATextOnBlur(this);">
    <input type="text" id="BTxt" value="" disabled="disabled">
</body>
<html>

И я сделал несколько тестов для этого, обнаружил, что даже событие click не может быть запущено для отключенного элемента.

<html>
<head>
    <script type="text/javascript" >
        function textClick()
        {
            alert('click'); 
        }
    </script>
</head>
<body>
    <input type="text" value="" disabled="disabled" onclick="textClick();">
</body>
<html>

Я хочу знать, есть ли в нем решение для JQuery? или он просто не может быть исправлен независимо от JS или JQuery. Благодарю.

Теги:

2 ответа

1

Вы должны использовать событие onkeypress. Вы можете обратиться сюда - http://www.w3schools.com/jsref/event_onkeypress.asp

Вы также можете захотеть рассмотреть onkeyup и onkeydown, а также в зависимости от вашего требования.

1

Вы можете проверить значение ATxt в событии keyup вместо размытия:

<input type="text" id="ATxt" value="" onkeyup="ATextOnBlur(this);">
<input type="text" id="BTxt" value="" disabled="disabled">
  • 0
    Спасибо за ваш ответ +1. Одна из проблем вашего кода, о которой я могу подумать, заключается в том, что если в функции ATextOnBlur существует запрос ajax, то при ATextOnBlur он вызовет запрос ajax. Боюсь, это приведет к дополнительной перегрузке сервера. это означает, что сервер будет атакован кем-то. Благодарю.
  • 0
    Вы можете сделать запрос AJAX, подождав некоторое время после последнего события keyup. Таким образом, вы не делаете ajax-запросы для каждого keyup, только пользователь написал целое слово.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню