Как объяснил Xavi , для этого нет 100% -ного кросс-браузера, поэтому я создал трюк самостоятельно (5 шагов для продолжения): 1. Мне нужна пара новых массивов:
window.timeouts = new Array();
window.memo_values = new Array();
2. в фокусе ввода текста, который я хочу вызвать (в вашем случае «электронная почта», в моем примере «имя») я установил интервал, например, используя jQuery (не требуется мысль):
jQuery('#name').focus(function ()
{
var id = jQuery(this).attr('id');
window.timeouts[id] = setInterval('onChangeValue.call(document.getElementById("'+ id +'"), doSomething)', 500);
});
3. на размытии я удаляю интервал: (всегда с использованием jQuery не требуется мысль), и я проверяю, изменилось ли значение
jQuery('#name').blur(function ()
{
var id = jQuery(this).attr('id');
onChangeValue.call(document.getElementById(id), doSomething);
clearInterval(window.timeouts[id]);
delete window.timeouts[id];
});
4. Теперь основная функция, которая проверяет изменения, следующая
function onChangeValue(callback)
{
if (window.memo_values[this.id] != this.value)
{
window.memo_values[this.id] = this.value;
if (callback instanceof Function)
{
callback.call(this);
}
else
{
eval( callback );
}
}
}
Важное примечание: вы можете использовать «это» внутри указанной функции, ссылаясь на ваш инициированный входной элемент HTML. Для работы этой функции должен быть указан идентификатор, и вы можете передать функцию или имя функции или строку команды в качестве обратного вызова.
5. Наконец вы можете что-то сделать, когда вход значение изменяется, даже если значение выбрано из раскрывающегося списка автозаполнения
function doSomething()
{
alert('got you! '+this.value);
}
Важное примечание: снова вы используете «это» внутри указанной функции, ссылаясь на ваш инициированный входной элемент HTML. РАБОЧИЙ ФИДДЛ !!! Я знаю, что это звучит сложно, но это не так. Я подготовил рабочую скрипту для вас, вход для изменения называется «имя», поэтому, если вы когда-либо вводили свое имя в онлайн-форме, у вас может быть раскрывающийся список автозаполнения вашего браузера для тестирования.
Простое удаление android:layout_columnWeight="1"
и android:layout_rowWeight="1"
решит проблему.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_weight="100">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/reletive" >
<TextView
android:id="@+id/output"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="Hello World!"
android:gravity="end" />
<TextView
android:id="@+id/input"
android:layout_below="@+id/output"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="Hello World!"
android:gravity="end"/>
</RelativeLayout>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="InvalidId"
android:layout_below="@+id/reletive"
android:numColumns="5">
<Button
android:layout_row="0"
android:layout_column="0"
android:text="1"/>
<Button
android:layout_row="0"
android:layout_column="1"
android:text="1"/>
<Button
android:layout_row="0"
android:layout_column="2"
android:text="1"/>
<Button
android:layout_row="0"
android:layout_column="3"
android:text="1"/>
<Button
android:layout_row="0"
android:layout_column="4"
android:text="1"/>
<Button
android:layout_row="1"
android:layout_column="0"
android:text="1"/>
<Button
android:layout_row="1"
android:layout_column="1"
android:text="1"/>
<Button
android:layout_row="1"
android:layout_column="2"
android:text="1"/>
<Button
android:layout_row="1"
android:layout_column="3"
android:text="1"/>
<Button
android:layout_row="1"
android:layout_column="4"
android:text="1"/>
</GridLayout>
</RelativeLayout>