2013-03-18 4 views
1

Так у меня есть текстовое поле (onSubmit без формы

<input type="text"/> 

), где я хочу, чтобы запустить функцию, когда пользователь нажимает ввод/подают его.

Теперь, onSubmit выглядит как лучшее решение. К сожалению, для этого требуется форма (насколько мне известно), и эта форма перезагружает страницу, когда я отправляю. И он добавляет дополнительный код, который мне не нравится. Я также пробовал onKeyPress, но это реагирует на каждый раз, когда пользователь вводит что-то (см. Мой предыдущий вопрос). Я попытался найти ключ «enter» в самой функции, но это не сработало. И я не хочу запускать функцию каждый раз, когда кто-то вводит что-то в поле.

Итак, чтобы подвести итог: я хочу запустить функцию, когда пользователь отправляет текстовое поле. Как мне это сделать? Есть ли способ, которым я могу использовать функцию onSubmit без использования формы? Что делают страницы, подобные Facebook, когда я что-то комментирую?

Я на самом деле пытаюсь сделать функцию комментариев в Facebook. Это код, который я до сих пор:

var facebook_footer = '<button onClick="fbLike(\''+post_id+'\')"> Like </button> <form onSubmit="fbComment(\''+post_id+'\')"><input type="text" id="' + post_id + '" /></form>'; 

function fbComment(post_id) { 
    var message = document.getElementById(post_id).value; 
    console.log('Trying to comment on: ' + post_id); 

    FB.api('/'+ post_id +'/comments?message=' + message, 'post', function(response) { 
    if (!response || response.error) { 
     alert('Error occured. ID: ' + post_id); 
    } else { 
     alert('Great! It worked. ID: ' + post_id); 
    } 
    }); 
} 

Может быть, у вас есть некоторые знания о FBapi, и знаю, что здесь стандартная процедура?

В любом случае, заблаговременно за ответы.

+1

1. Форма не требует страниц перезагрузки (если OnSubmit возвращается FALSE) 2. Вам не нужно представить, вы могли бы нам тип = «кнопка» <входа OnClick = функция "(); "> 3. Если вы хотите использовать элементы формы без использования формы, я бы предложил document.getElementById (« NAME »), чтобы выяснить ваши разные входы. –

+0

1. Хорошо, поэтому я сначала попробовал использовать форму. Случилось так, что у функции даже не было времени для запуска. Страница просто перезагрузилась, когда я нажал кнопку ввода и добавил '?' после URL. 2. Я не хочу кнопку, я просто хочу, чтобы пользователь нажал кнопку ввода. 3. Я использую document.getElementById ('id'), чтобы получить содержимое текстового поля. Но проблема заключается в выполнении функции, когда пользователь нажимает «вводить». – Aleksander

+0

Ключ ввода - это ASCII 13, поэтому что-то подобное должно работать: onkeypress = "return myFuntion (event)" funtion myFunction (e) {if (e.keyCode == 13) {return true;} else {return false;}} –

ответ

4

Лучшим способом было бы иметь эту форму и использовать onSubmit. Чтобы форма не отправлялась сама по себе (и использовать свою собственную функцию JS), от этой функции нужно только return false.

+0

Как я могу вернуть false из функции? То, что произошло, когда я попытался использовать форму, состояло в том, что страница перезагрузилась, как только я нажал кнопку ввода. У функции даже не было времени на запуск ... И она добавила '?' до конца URL-адреса. Как предотвратить изменение формы? – Aleksander

+0

либо используют обработчик события jQuery, либо просто создают функцию и вызывают ее из тега '

', поставив вызов функции, подобный ''. Затем в этой функции просто «return false», и форма вообще не будет отправляться. – hexblot

+0

Я включил функцию для запуска в моем вопросе. Где бы я положил return false?Если я посмотрю на консоль, я вижу, что получаю: «Попытка прокомментировать: xxxxxx», но затем перезагрузка страницы и последний бит (фактически комментирование) не запускаются. – Aleksander

0

В зависимости от приложения, onBlur или onChange. onChange срабатывает при изменении значения поля. onBlur срабатывает, когда поле теряет фокус, независимо от значения.

+0

Событие изменения отправляется **, когда элемент управления теряет фокус **, и значение изменилось (за исключением переключателей и флажков в некоторых браузерах). – RobG

+0

Я не знаю, как это сработает ... Поскольку у меня есть текстовое поле, и я хочу, чтобы функция запускалась, когда пользователь «отправляет» это/нажимает. – Aleksander

+0

* "onChange срабатывает при изменении значения поля * * - Нет, см. Комментарий @RobG. Вместо этого используйте onInput. – Booligoosh

Смежные вопросы