#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть веб-форма с текстовым полем ввода для URL-адреса. Когда я перетаскиваю URL-адрес из адресной строки браузера (я использую Firefox, но я бы хотел, чтобы он работал и в других, если возможно) в поле ввода, он вставляет текст URL в любой уже существующий текст. Я хочу, чтобы URL-адрес перезаписывал любой существующий текст вместо этого.
Я думаю, я мог бы захватить какое-нибудь событие и упростить любой существующий текст перед добавлением удаляемого текста.
Если это возможно настроить с помощью jQuery, это хорошо, в противном случае в простом javascript.
Редактировать
Кажется, это работает:
$("#myinput").bind("drop", function(e) {
e.currentTarget.value = "";
return true;
});
Я не уверен, какие браузеры поддерживают это событие, но если это самые современные, то все должно быть в порядке.
Ответ №1:
Если вы ориентируетесь на ie, Firefox 3.5 , safari или chrome, событие ondrop должно сработать. Вы можете либо использовать форму, предоставленную Dr.Molle, либо установить обработчик ondrop с помощью javascript.
//for ie must use this syntax or the html version
document.getElementById('myInput').ondrop = function(e){
//doesn't have to be jquery here
//using window.location because I can't test e.dataTransfer.getData('Text') right now
$(this).val(window.location);
}
Комментарии:
1. Обратите внимание, что это будет работать только для получения окна. очевидно, что местоположение. Если вы хотите заменить содержимое перетаскиваемого текста, загляните в объект event dataTransfer.
2. Кажется, это работает: $(«#myinput»).bind(«drop», function(e) { e.currentTarget.value = «»; возвращает true; });
Ответ №2:
Происходит запуск ondrop-события:
<input ondrop="this.value=''">
Комментарии:
1. Итак, у меня должна быть совершенно особая FF-версия, потому что она работает для меня (4.0.1)
2. @Andy E Если вы пытаетесь использовать jsfiddle, это не сработает из-за использования ими iframes и проблем с перекрестным происхождением.