क्रोम पर, "खोज" ईवेंट को खोज इनपुट पर निकाल दिया जाता है जब उपयोगकर्ता स्पष्ट बटन पर क्लिक करता है।
क्या इंटरनेट एक्सप्लोरर 10 पर जावास्क्रिप्ट में उसी घटना को पकड़ने का एक तरीका है?
क्रोम पर, "खोज" ईवेंट को खोज इनपुट पर निकाल दिया जाता है जब उपयोगकर्ता स्पष्ट बटन पर क्लिक करता है।
क्या इंटरनेट एक्सप्लोरर 10 पर जावास्क्रिप्ट में उसी घटना को पकड़ने का एक तरीका है?
जवाबों:
एकमात्र समाधान जो मैंने अंततः पाया:
// There are 2 events fired on input element when clicking on the clear button:
// mousedown and mouseup.
$("input").bind("mouseup", function(e){
var $input = $(this),
oldValue = $input.val();
if (oldValue == "") return;
// When this event is fired after clicking on the clear button
// the value is not cleared yet. We have to wait for it.
setTimeout(function(){
var newValue = $input.val();
if (newValue == ""){
// Gotcha
$input.trigger("cleared");
}
}, 1);
});
oninput
इसके बजाय घटना का उपयोग करना है । जब आप X आइकन दबाते हैं तो input
ईवेंट आग हो जाता है।
if (oldValue === "")
?
input
-Event काम के साथ Lucent द्वारा समाधान करते समय , यह समाधान इस बात में श्रेष्ठ है कि यह केवल तभी फायर करता है जब तत्व को साफ किया जाता है, जबकि Lucent भी आग लगाता है जब कर्सर तत्व में प्रवेश करता है, तत्व को छोड़ देता है, और यह भी कि जब डेटा दर्ज किया गया है।
oninput
घटना के साथ आग this.value
रिक्त स्ट्रिंग पर सेट। इससे मेरे लिए समस्या हल हो गई, क्योंकि मैं उसी कार्रवाई को निष्पादित करना चाहता हूं चाहे वे एक्स के साथ खोज बॉक्स को साफ करें या बैकस्पेसिंग द्वारा। यह IE 10 में ही काम करता है।
inputEl.addEventListener('input', function(){ /* DoSomething */ })
।
input
इसके बजाय उपयोग करें । यह सभी ब्राउज़रों के तहत समान व्यवहार के साथ काम करता है।
$(some-input).on("input", function() {
// update panel
});
क्यों नहीं
$("input").bind('input propertychange', function() {
if (this.value == ""){
$input.trigger("cleared");
}
});
मुझे लगता है कि इस सवाल का जवाब दिया गया है, लेकिन स्वीकृत जवाब हमारी स्थिति में काम नहीं आया। IE10 ने $input.trigger("cleared");
कथन को मान्यता नहीं दी है ।
हमारे अंतिम समाधान ने उस कथन को ENTER कुंजी (कोड 13) पर कीडाउन इवेंट के साथ बदल दिया। पोस्टरिटी के लिए, हमारे मामले में यह काम करता है:
$('input[type="text"]').bind("mouseup", function(event) {
var $input = $(this);
var oldValue = $input.val();
if (oldValue == "") {
return;
}
setTimeout(function() {
var newValue = $input.val();
if (newValue == "") {
var enterEvent = $.Event("keydown");
enterEvent.which = 13;
$input.trigger(enterEvent);
}
}, 1);
});
इसके अलावा, हम इस बंधन को केवल "खोज" इनपुट पर लागू करना चाहते थे, न कि पृष्ठ पर प्रत्येक इनपुट। स्वाभाविक रूप से, IE ने इसे भी मुश्किल बना दिया ... हालांकि हमने कोड किया था <input type="search"...>
, IE ने उन्हें रूप में प्रस्तुत किया type="text"
। यही कारण है कि jQuery चयनकर्ता संदर्भ type="text"
।
चीयर्स!
हम सिर्फ input
घटना सुन सकते हैं । कृपया विवरण के लिए संदर्भ देखें। यह है कि मैं IE पर Sencha ExtJS में स्पष्ट बटन के साथ एक मुद्दा कैसे तय किया:
Ext.define('Override.Ext.form.field.ComboBox', {
override: 'Ext.form.field.ComboBox',
onRender: function () {
this.callParent();
var me = this;
this.inputEl.dom.addEventListener('input', function () {
// do things here
});
}
});
बॉक्स समाधान के बाहर सिर्फ X को पूरी तरह से CSS से मुक्त करना है:
::-ms-clear { display: none; } /* see /programming/14007655 */
इसके निम्नलिखित लाभ हैं:
मेरे asp.net सर्वर नियंत्रण के लिए
<asp:TextBox ID="tbSearchName" runat="server" oninput="jsfun_tbSearchName_onchange();"></asp:TextBox>
js
function jsfun_tbSearchName_onchange() {
if (objTbNameSearch.value.trim() == '')
objBTSubmitSearch.setAttribute('disabled', true);
else
objBTSubmitSearch.removeAttribute('disabled');
return false;
}
संदर्भ
MSDN onchange घटना - IE10 में परीक्षण किया गया।
... या सीएसएस के साथ छिपाने के लिए:
input[type=text]::-ms-clear { display: none; }
उपरोक्त कोड मेरे मामले में काम नहीं कर रहा था और मैंने एक पंक्ति को बदल दिया है और पेश किया $input.typeahead('val', '');
जो मेरे मामले में काम करता है।
// There are 2 events fired on input element when clicking on the clear button:// mousedown and mouseup.
$("input").on('mouseup', function(e){
var $input = $(this),
oldValue = $input.val();
if (oldValue === ''){
return;
}
// When this event is fired after clicking on the clear button // the value is not cleared yet. We have to wait for it.
setTimeout(function(){
var newValue = $input.val();
if (newValue === ''){
$input.typeahead('val', '');
e.preventDefault();
}
}, 1);
});