IE8下,在獲取input:text輸入框的值時,若是輸入框未輸入,則會獲取到placeholder屬性的值。ajax
1 <input type="text" id="id-input" placeholder="請輸入查詢條件"/> 2 <div class="w-btn orange-btn w120 w2-center" id="id-btn">獲取輸入框的值</div>
可用如下JS函數解決(需jQuery支持,入參selector即jQuery選擇器)瀏覽器
function getValue(selector) { var jqObj = $(selector); if (jqObj.size() == 0) { return ''; } var val = jqObj.val() || ''; if (val == jqObj.attr('placeholder')) { return ""; } return val; }
主流瀏覽器用HTML5的標準事件oninput可實現對input輸入框的實時監聽,而IE6/7/8則不支持,可改成使用onpropertychange事件函數
這個事件在用戶界面改變或者使用腳本直接修改內容兩種狀況下都會觸發,舉例以下:性能
<input type="text" id="id-text"/>
因實際使用中監聽值(value)的變化的使用場景較多,可在JS響應事件中經過propertyName進行篩選,下降性能損耗spa
document.getElementById('id-text').attachEvent('onpropertychange', function (event) { if (event.propertyName !== 'value') { return; } //dosomething... });
PS:在jQuery綁定事件時,未能找到獲取變化propertyName的API,因此此處使用原生JS註冊事件並獲取了propertyNamecode
IE8下,undefined.XXX和undefined.XXX.XXX會報錯,特別需注意ajax請求後的賦值,如後臺response的值爲空,屬性值未賦上,再進行屬性的獲取,會出現問題。對象